.NET에서 대용량 텍스트 파일 읽기: 효율적인 접근 방식 탐색
대용량 텍스트 파일로 작업하려면 엄청난 양의 데이터를 처리하기 위한 효율적인 기술이 필요합니다. . 일반적인 시나리오 중 하나는 1GB 텍스트 파일을 한 줄씩 읽는 것입니다. 이 가이드에서는 이 작업에 대한 최적의 방법을 탐색합니다.
StreamReader.ReadLine()
StreamReader는 텍스트 파일을 읽는 일반적인 접근 방식입니다. ReadLine() 메서드를 사용하면 파일의 줄을 반복할 수 있습니다. 그러나 대용량 파일의 경우 이 방법은 전체 파일을 메모리로 읽어들이기 때문에 상당히 느릴 수 있습니다.
MemoryMappedFile
.NET 4.0 이상에서 사용 가능한 경우, MemoryMappedFile은 대용량 파일 처리를 위해 특별히 설계된 권장 클래스입니다. 파일을 메모리에 mmap하여 전체 파일을 메모리에 로드하지 않고도 해당 내용에 직접 액세스할 수 있습니다.
코드 예제
다음 예제 코드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!