큰 텍스트 파일의 마지막 줄을 효율적으로 검색
대량 텍스트 파일을 처리할 때 마지막 줄을 효율적으로 검색하는 것이 중요합니다. 대용량 파일의 경우 무작위 액세스는 시간이 많이 걸리므로 실용적이지 않습니다. 대신 다음 해결 방법을 고려하십시오.
공백이 아닌 마지막 줄 반환:
아래 tail 함수는 파일을 로드하거나 공백이 아닌 마지막 줄을 빠르게 검색합니다. 전체 파일을 순회합니다. 파일의 끝을 찾아 줄 바꿈을 만날 때까지 문자를 뒤로 읽은 다음 마지막 줄을 구성하고 반환합니다.
public String tail(File file) { // ... for (long filePointer = fileLength; filePointer != -1; filePointer--) { // ... sb.append((char) readByte); } // ... }
마지막 N 줄 반환:
대신 마지막 N 줄이 필요한 경우 tail2 함수를 사용하세요. 비슷한 기술을 사용하지만 출력을 반전하고 구성하기 전에 원하는 줄을 결정하기 위해 줄 바꿈을 계산합니다.
public String tail2(File file, int lines) { // ... for (long filePointer = fileLength; filePointer != -1; filePointer--) { line = line 1; sb.append((char) readByte); } // ... }
호출 및 사용:
File file = new File("D:\\stuff\\huge.log"); System.out.println(tail(file)); System.out.println(tail2(file, 10));
유니코드 고려사항:
구현에서는 문자 반전을 사용하여 행을 재구성합니다. 일반적으로 효과적이지만 악센트 및 모자와 같은 문자에 유니코드 반전 문제가 발생할 수 있습니다. 따라서 다양한 언어에서 이 접근 방식을 사용하기 전에 철저한 테스트가 필수적입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3