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
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
java.net.URLConnection을 사용하여 HTTP 요청을 실행하고 처리하는 방법 (0) | 2021.08.11 |
---|---|
Java에서 폴더의 모든 파일을 읽는 방법 (0) | 2021.08.04 |
Java에서 싱글 톤 패턴을 구현하는 효율적인 방법 (0) | 2021.07.30 |
Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유 (0) | 2021.07.29 |
Java에서 YYYY-MM-DD HH : MI : Sec.Millisecond 형식으로 현재 시간을 얻는 방법 (0) | 2021.07.28 |