자바에서 파일의 라인 수 세는 법
조회수 8090회
엄청 큰 데이터 파일이 있는데요. 가끔 이 데이터 파일들이 몇줄짜리인지 알아야 할 필요가 있는데, 지금까지는 이걸 한줄 한줄 마지막줄까지 읽는 방식으로 했는데 좀더 효율적으로 읽는 방법이 없을까 궁금해요.
1 답변
-
테스트 했을때 readLine보다 6배나 빠른 방법인데요. 150메가짜리 로그 파일이면 0.35초면 읽습니다. readLines()로 하면 2.40초가 걸리구요.
public static int countLines(String filename) throws IOException { InputStream is = new BufferedInputStream(new FileInputStream(filename)); try { byte[] c = new byte[1024]; int count = 0; int readChars = 0; boolean empty = true; while ((readChars = is.read(c)) != -1) { empty = false; for (int i = 0; i < readChars; ++i) { if (c[i] == '\n') { ++count; } } } return (count == 0 && !empty) ? 1 : count; } finally { is.close(); } }
댓글 입력