TextReader から各行をループするにはどうすればよいですか?[重複]
-
12-12-2019 - |
質問
重複の可能性:
C# ファイルを 1 行ずつ読み取る
TextReader からの行をループするにはどうすればよいですか?
.NET を与えられました テキストリーダー (連続した一連の文字を読み取ることができるクラス)。そのコンテンツを行ごとにループするにはどうすればよいですか?
解決
このようなことを意味しますか?
string line = null;
while((line = reader.ReadLine()) != null)
{
// do something with line
}
他のヒント
拡張メソッドを非常に簡単に作成できるので、 foreach
:
public static IEnumerable<string> ReadLines(this TextReader reader)
{
string line = null;
while((line = reader.ReadLine()) != null)
{
yield return line;
}
}
これに注意してください しません 最後にリーダーを閉じてください。
その後、以下を使用できます。
foreach (string line in reader.ReadLines())
編集:コメントで指摘されているように、これは怠惰です。すべての行をメモリに読み取るのではなく、一度に 1 行だけを読み取ります。
現時点で私が持っている遅延のない解決策は次のとおりです。
foreach(string line in source.ReadToEnd().Split(Environment.NewLine.ToArray(),StringSplitOptions.None))
次のように使用します。
string line;
while ((line = myTextReader.ReadLine()) != null)
{
//do whatever with "line";
}
または
string Myfile = @"C:\MyDocument.txt";
using(FileStream fs = new FileStream(Myfile, FileMode.Open, FileAccess.Read))
{
using(StreamReader sr = new StreamReader(fs))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
}
所属していません StackOverflow