"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 큰 텍스트 파일의 마지막 줄을 효율적으로 검색하는 방법은 무엇입니까?

큰 텍스트 파일의 마지막 줄을 효율적으로 검색하는 방법은 무엇입니까?

2024년 11월 16일에 게시됨
검색:204

How to Efficiently Retrieve the Last Line of a Large Text File?

큰 텍스트 파일의 마지막 줄을 효율적으로 검색

대량 텍스트 파일을 처리할 때 마지막 줄을 효율적으로 검색하는 것이 중요합니다. 대용량 파일의 경우 무작위 액세스는 시간이 많이 걸리므로 실용적이지 않습니다. 대신 다음 해결 방법을 고려하십시오.

공백이 아닌 마지막 줄 반환:

아래 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