使用File.ReadLines
:
foreach (var line in File.ReadLines("file path"))
{
if (line.EndsWith(myWord))
{
outputEmails.Text += line + Environment.NewLine;
}
}
内部的にはそうあなたがそれを読む前にファイル全体をメモリにロードしないStreamReader
を使用しています。
memory mapped filesでさらに優れたパフォーマンスを達成できます。これにより、ファイルの内容を読み込むときに余分なメモリコピー操作が節約されます。
string line;
var stringBuilder = new StringBuilder();
using (var memoryMappedFile = System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(@"D:\Temp\test.txt"))
using (var viewStream = memoryMappedFile.CreateViewStream())
using (var streamReader = new StreamReader(viewStream))
{
while ((line = streamReader.ReadLine()) != null)
if (line.EndsWith(myWord))
stringBuilder.AppendLine(line);
}
outputEmails.Text = stringBuilder.ToString();
そして、はい、他の回答には、生の文字列連結に代わりStringBuilder
を使用して、言うようにも多くの行がフィルタ条件に一致する場合は特に、高速なコードを作成します。
使用ストリームリーダーの代わりに、あなたは正しい@DmitryEgorovメモリ –