在.NET 中讀取大型文字檔案:探索有效的方法
處理大型文字檔案需要有效的技術來處理龐大的數據量。常見的場景是逐行讀取 1 GB 文字檔。本指南探討了此任務的最佳方法。
StreamReader.ReadLine()
StreamReader 是讀取文字檔案的常用方法。 ReadLine() 方法允許遍歷檔案的行。但是,對於大文件,此方法可能會非常慢,因為它將整個文件讀取到記憶體中。
MemoryMappedFile
如果在 .NET 4.0 或更高版本中可用, MemoryMappedFile 是專門為處理大型檔案而設計的建議類別。它將文件映射到記憶體中,允許直接存取其內容,而無需將整個文件載入到記憶體中。
程式碼範例
以下範例程式碼說明如何使用MemoryMappedFile閱讀大文字file:
using System.IO.MemoryMappedFiles; ... // Open the file MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile("largeFile.txt", FileMode.Open, null, 1024 * 1024 * 1024); // 1 GB buffer // Create a view of the file MemoryMappedViewAccessor accessor = mappedFile.CreateViewAccessor(); // Read the file byte[] lineBytes = new byte[1024]; for (long i = 0; i < mappedFile.Length; i += 1024) { accessor.ReadArray(i, lineBytes, 0, 1024); Console.WriteLine(Encoding.UTF8.GetString(lineBytes)); }
>
結論結論處理大型文字檔案時,MemoryMappedFile 提供了比StreamReader.ReadLine() 更有效率的解決方案,允許直接存取資料而不將整個檔案載入記憶體。出於相容性原因,StreamReader.ReadLine() 對於早期版本的 .NET 仍然是一個可行的選項。以上是如何在.NET中高效讀取大文本檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!