대용량 텍스트 파일(>10GB)에서 마지막 10줄을 효율적으로 검색하는 방법
대규모 텍스트 파일의 마지막 10줄 표시 텍스트 파일은 특히 파일 크기가 10GB를 초과하는 경우 어려울 수 있습니다. 효율적인 솔루션을 위해 다음 접근 방식을 고려하십시오.
처음에는 파일을 끝까지 트래버스합니다. 다음으로, 체계적으로 뒤로 이동하여 10개의 연속된 개행 문자를 검색합니다. 찾은 후에는 결론까지 읽어보고 다양한 문자 인코딩에 주의하세요.
프로세스를 적절하게 조정하여 파일이 10줄 미만인 시나리오를 처리하세요. 다음은 C#으로 구현한 것입니다.
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 the case where the file has fewer than numberOfTokens lines fs.Seek(0, SeekOrigin.Begin); buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); return encoding.GetString(buffer); } }
이 방법은 파일의 실제 토큰 수에 맞게 동적으로 조정되므로 줄 수가 다양한 파일에 효과적입니다.
위 내용은 큰 텍스트 파일의 마지막 10줄을 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!