2017-09-25 18 views
2

私はチュートリアルをオンラインで読んで、C#で行ごとに単純なテキストファイルを読むことにしていますが、私は頭を抱くことができません。StreamReaderを使用してC#で1行ずつファイルを読む

これは私の単純なコードです:

StreamReader reader = new StreamReader("hello.txt"); 

が、これは私にエラーを与える:

Argument 1: cannot convert from 'string' to 'System.IO.Stream'

This article on msdnは、同じコードを使用し、そこにそれが動作しますが、私が間違って何をやっていますか?

+1

があなたを持っているようにあなたが行うことができます清潔で再構築を試みましたか?文字列パラメータを持つコンストラクタは間違いなく有効です。私はこのエラーがコンパイル時に正しいと仮定していますか? –

+0

どのようなフレームワークを使用していますか? –

+0

@DanDこのコンストラクタは、使用されているフレームワークを知らなくても難しいです。このコンストラクタはnetStandard <2.0には含まれていません。これはnetCore <2.0 –

答えて

3

ファイルを読みたい場合は、最も簡単な方法は、あなたはまた、このようにそれを行うことができます

var path = "c:\\mypath\\to\\my\\file.txt"; 
var lines = File.ReadAllLines(path); 

foreach (var line in lines) 
{ 
    Console.WriteLine(line); 
} 

です:

var path = "c:\\mypath\\to\\my\\file.txt"; 
using (var reader = new StreamReader(path)) 
{ 
    while (!reader.EndOfStream) 
    { 
     Console.WriteLine(reader.ReadLine()); 
    } 
} 
+1

もし 'foreach'を使っているのであれば' File.ReadLines() 'を使ってファイル全体をメモリに置かないようにしてください。 –

0

この

int counter = 0; 
string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\hello.txt"); 
while((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine (line); 
    counter++; 
} 

file.Close(); 
+0

'counter 'の使い方は?さらに、 'IDisposable'を実装する型に対しては' using'パターンを使うべきです(あるいは 'file.Close()'を 'finally'ブロックに置くべきです):https://docs.microsoft.com/ja -us/dotnet/standard /ガベージコレクション/ using-objects。 – benichka

関連する問題