私はC#で働いていると私は大きなテキストファイル(75メガバイト)私はStreamReaderをしてReadToEndでファイルを読み込むしようとした正規表現C#のテキストファイルから特定の行を取得するには?
と一致する行を保存したい を得たが、それはラムの400メガバイトを取ります
また、再度使用するとメモリ不足の例外が発生します。
私はその後File.ReadAllLines()を使用してみました:これはすべて素晴らしいですが、私の関数はメモリ取らdoesntが明確とIを終了するとき を思い出したときにのみ、使用メモリの300メガバイトが残ってる
string[] lines = File.ReadAllLines("file");
StringBuilder specialLines = new StringBuilder();
foreach (string line in lines)
if (match reg exp)
specialLines.append(line);
を関数を呼び出して行を実行します。 string [] lines = File.ReadAllLines( "file"); メモリが50MBまでクリアされているのを確認してから、200MBに再割り当てします
どうすればこのメモリをクリアすることができますか?あなたは、ファイルのライン・バイ・ラインを読むために、あなたが必要とするこれらの行を保存するためにStreamReader#ReadLineを使用することができます
また、 'FileStream'と' StreamReader'オブジェクトを処分することを忘れないでください。 –
ありがとうございました。はい、もちろんそうです。 – eoldre
ストリームを自分で作成する必要はなく、StreamReaderコンストラクターはファイル名を直接取得できます。また、EndOfStreamを使用して、ファイルの最後にいるかどうかを確認しないでください。StreamReaderがデータをバッファリングしているため、StreamReaderがすべての行を返す前にストリームの位置が最後になる可能性があります。 –