대량 텍스트 파일(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!