> 백엔드 개발 > C++ > C#에서 10GB 텍스트 파일의 마지막 10줄을 효율적으로 읽는 방법은 무엇입니까?

C#에서 10GB 텍스트 파일의 마지막 10줄을 효율적으로 읽는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-29 02:03:09
원래의
439명이 탐색했습니다.

How to Efficiently Read the Last 10 Lines of a 10GB  Text File in C#?

대량 텍스트 파일(10GB 이상)의 마지막 10줄 검색

텍스트 처리 영역에서 일반적인 과제는 매우 큰 텍스트 파일의 마지막 몇 줄. 10GB를 초과하는 파일을 처리할 때 기존 접근 방식으로는 부족할 수 있습니다. 이 기사에서는 C#을 사용하여 이 문제에 대한 효과적인 솔루션을 제시하고 그 구현을 보여주는 코드 조각을 제공합니다.

마지막 10줄을 효율적으로 검색하려면 파일을 끝에서 뒤로 탐색하는 전략이 필요합니다. 줄 수는 가변적일 수 있으므로 10줄 바꿈을 만날 때까지 반복적으로 뒤로 탐색합니다. 이 지점에 도달하면 남은 콘텐츠를 앞으로 읽어 마지막 10줄을 캡처합니다.

다음 구현을 고려하세요.

public static string ReadEndTokens(string path, Int64 numberOfTokens, Encoding encoding, string tokenSeparator) {

    int sizeOfChar = encoding.GetByteCount("\n");
    byte[] buffer = encoding.GetBytes(tokenSeparator);

    using (FileStream fs = new FileStream(path, FileMode.Open)) {
        Int64 tokenCount = 0;
        Int64 endPosition = fs.Length / sizeOfChar;

        for (Int64 position = sizeOfChar; position < endPosition; position += sizeOfChar) {
            fs.Seek(-position, SeekOrigin.End);
            fs.Read(buffer, 0, buffer.Length);

            if (encoding.GetString(buffer) == tokenSeparator) {
                tokenCount++;
                if (tokenCount == numberOfTokens) {
                    byte[] returnBuffer = new byte[fs.Length - fs.Position];
                    fs.Read(returnBuffer, 0, returnBuffer.Length);
                    return encoding.GetString(returnBuffer);
                }
            }
        }

        // handle case where number of tokens in file is less than numberOfTokens
        fs.Seek(0, SeekOrigin.Begin);
        buffer = new byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
        return encoding.GetString(buffer);
    }
}
로그인 후 복사

이 코드는 파일이 10보다 작고 읽기 작업을 적절하게 조정합니다. 인코딩 매개변수를 사용하면 파일 인코딩을 기반으로 사용자 정의가 가능하며 tokenSeparator를 사용하여 다른 구분 기호의 마지막 연속 요소를 검색할 수 있습니다.

이 접근 방식을 사용하면 마지막 10줄의 대용량 텍스트를 효과적으로 검색할 수 있습니다. 효율적인 처리와 정확한 결과를 보장합니다.

위 내용은 C#에서 10GB 텍스트 파일의 마지막 10줄을 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿