>백엔드 개발 >C++ >.NET에서 대용량 텍스트 파일을 효율적으로 읽으려면 어떻게 해야 합니까?

.NET에서 대용량 텍스트 파일을 효율적으로 읽으려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-05 10:53:41555검색

How Can I Efficiently Read Large Text Files in .NET?

.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.