자바에서 파일의 라인 수 세는 법

조회수 8088회

엄청 큰 데이터 파일이 있는데요. 가끔 이 데이터 파일들이 몇줄짜리인지 알아야 할 필요가 있는데, 지금까지는 이걸 한줄 한줄 마지막줄까지 읽는 방식으로 했는데 좀더 효율적으로 읽는 방법이 없을까 궁금해요.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    테스트 했을때 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();
        }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)