0

重複
の可能性:テキストファイルを1行ずつWindows RTで読み取る方法は?

C#でファイルから1行ずつ読み取ろうとしています。

これは私のコードです

   String filename = "apoel.txt";

   System.IO.StreamReader file = new System.IO.StreamReader(filename);

私はMSDNページの指示に従い、正確に従いました。問題は、エラーが発生し続けることです

System.IO.StreamReader.StreamReader(System.IO.Stream)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります
引数1:'文字列'から'System.IO.Stream'に変換できません

追加しましたusing System.IO; 私のコードの上に

私は何が間違っているのですか?それが助けになるなら、これはWindowsMetroアプリです

また、私が投稿したMSDNの記事が間違っていて、機能しない理由を誰かが説明できますか?代わりを教えてはいけません。MSDNでそのように説明されているのに、コードが機能しない理由を教えてください

4

4 に答える 4

13

StreamReaderのメンバーの多くがWindowsストアアプリで利用できないという事実を考慮していないドキュメントを読んでいました。

全体的なStreamReaderドキュメントを見てください。隣に緑色の鞄が付いているメンバーのみが使用できます。

Windowsストアアプリでのファイルアクセスは、フルデスクトップ.N​​ETとは少し異なります。このMSDNガイドを読むことをお勧めします。を取得したら、-Streamを作成することも、実行しようとしていることに応じて、などStreamReaderのメンバーを使用することもできます。Windows.Storage.FileIOReadLinesAsync

于 2013-01-04T20:59:38.797 に答える
4

これが私がWindows8でファイルを読み書きするために使用するコードです。それは機能し、それがあなたにも役立つことを願っています。

private StorageFolder localFolder;
// Read from a file line by line
public async Task ReadFile()
{
    try
    {
        // get the file
        StorageFile myStorageFile = await localFolder.GetFileAsync("MyDocument.txt");
        var readThis = await FileIO.ReadLinesAsync(myStorageFile);
        foreach (var line in readThis)
        {
            String myStringLine = line;
        }
        Debug.WriteLine("File read successfully.");
    }
    catch(FileNotFoundException ex)
    {   
        Debug.WriteLine(ex);           
    }
}
// Write to a file line by line
public async void SaveFile()
{
    try
    {
        // set storage file
        StorageFile myStorageFile = await localFolder.CreateFileAsync("MyDocument.txt", CreationCollisionOption.ReplaceExisting);
        List<String> myDataLineList = new List<string>();
        await FileIO.WriteLinesAsync(myStorageFile, myDataLineList);
        Debug.WriteLine("File saved successfully.");
    }
    catch(FileNotFoundException ex)
    {  
        Debug.WriteLine(ex);            
    }
}
于 2013-01-05T10:29:37.803 に答える
2

上記の例では、ファイル名は何にも初期化されていません。コンパイラの新しいバージョンでは、ファイル名の割り当てられていない使用について不平を言います。いずれにせよ、ファイル名をに初期化します

string filename = @"c:\somefile.txt";

正しくコンパイルされるはずです。

于 2013-01-04T21:11:16.303 に答える
2
String[] lines = File.ReadAllLines(filePath);

また

List<string> lines = new List<string>(File.ReadAllLines(filePath));
于 2013-01-04T21:22:43.587 に答える