サイズがギガバイトに達する非常に大きなテキスト ファイルを扱う場合、ファイルを効率的に読み取ることが維持するために重要です。パフォーマンス。 .NET では、この課題に取り組むためのアプローチがいくつかあります。
1 つの方法は、StreamReader クラスとその多用途な ReadLine メソッドを利用することです。ただし、1 GB ものサイズのファイルの場合、この方法は面倒で遅くなる可能性があります。より最適化されたソリューションは、.NET 4.0 以降で大きなファイルを処理するために明示的に設計されたクラスである MemoryMappedFile を使用することです。
MemoryMappedFile を利用するには、次のようにクラスのインスタンスを作成できます。
MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(filePath, FileMode.Open, null, fileLength);
メモリ マップト ファイルが確立されると、ファイルをメモリに読み込まずにファイルの内容に直接アクセスできます。このアプローチにより、大きなファイル操作のパフォーマンスが大幅に向上します。
たとえば、MemoryMappedFile を使用してファイルから行を読み取るには:
byte[] buffer = new byte[1024]; mmf.CreateViewAccessor().ReadArray(byteOffset, buffer, 0, bufferSize); string line = Encoding.UTF8.GetString(buffer);
また、StreamReader を使用したい場合は、次のようにすることもできます。バッファを使用して読み取りプロセスを最適化します:
using (StreamReader sr = new StreamReader(filePath)) { char[] buffer = new char[4096]; int charsRead; while ((charsRead = sr.ReadBlock(buffer, 0, buffer.Length)) != 0) { // Process the buffered data... } }
バッファベースの読み取りを利用することで、ディスク アクセス操作の数が増加し、大きなファイルのパフォーマンスが向上します。
以上が.NET で 1GB のテキスト ファイルを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。