프로그래밍 언어/JAVA

Java를 사용하여 줄 단위로 큰 텍스트 파일을 읽는 방법

Rateye 2021. 8. 3. 10:35
728x90
반응형
질문 : Java를 사용하여 줄 단위로 큰 텍스트 파일을 어떻게 읽을 수 있습니까?

Java를 사용하여 줄 단위로 약 5-6GB의 큰 텍스트 파일을 읽어야합니다.

어떻게 빨리 할 수 있습니까?

답변

일반적인 패턴은

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
       // process the line.
    }
}

문자 인코딩이 없다고 가정하면 데이터를 더 빨리 읽을 수 있습니다. 예를 들어 ASCII-7이지만 큰 차이는 없습니다. 데이터로 수행하는 작업이 훨씬 더 오래 걸릴 가능성이 높습니다.

line 누출 범위를 피하는 덜 일반적인 패턴입니다.

try(BufferedReader br = new BufferedReader(new FileReader(file))) {
    for(String line; (line = br.readLine()) != null; ) {
        // process the line.
    }
    // line is not visible here.
}

업데이트 : Java 8에서는 할 수 있습니다.

try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
        stream.forEach(System.out::println);
}

참고 : #close 메서드가 호출되었는지 확인하기 위해 try-with-resource 블록에 Stream을 배치해야합니다. 그렇지 않으면 GC가 훨씬 나중에 수행 할 때까지 기본 파일 핸들이 닫히지 않습니다.

출처 : https://stackoverflow.com/questions/5868369/how-can-i-read-a-large-text-file-line-by-line-using-java
728x90
반응형