2015-01-07 1 views
3

BufferedReader # readLine()은 버퍼를 8192 바이트로 채 웁니다. 행 자체의 크기가 그보다 훨씬 큰 경우 예외가 발생하거나 청크로 읽고 전체 행을 인쇄합니까?java readLine()은 1GB 라인을 읽을 수 있습니다

+2

1 GB 라인? 그것은 초장형, 축소 형 CSS 파일과 같은 것입니까, 아니면 무엇입니까? – jyoon

+0

왜 시도하고 디버깅하지 않습니까? –

+0

'BufferedReader'를 적절한 크기 인 – bachr

답변

6

BufferedReader.readLine()은 1GB 일 수있는 String을 반환하도록 선언되었습니다. A String은 내부 표현이 char[]이고 Java에서 배열의 길이는 10^9보다 훨씬 클 수 있습니다 (배열의 최대 크기는 Integer.MAX_VALUE보다 약간 큽니다). 또한 방해하지 않도록

BufferedReader.readLine()의 구현은 라인 1GB 이상 길게하는 것이 또한 char 배열에 String을 빌드 StringBuffer를 이용한다.

BufferedReader의 내부 버퍼는 최대 작업을 제한하지 않으며 특정 작업의 속도를 높이고 Reader.mark()Reader.reset() 작업을 지원하기 위해 사용됩니다.

참고 :

그것은 배열 제한 문자 수에 적용되도록 String 저장 문자 바이트, 사용되는 문자 인코딩에 따라 바이트의 수보다 훨씬 더 할 수없는 것을 당신의 호의에 실제 텍스트 내용 (예 : UTF-8 인코딩이 사용되는 경우 문자는 4 바이트 데이터로 인코딩 될 수도 있음).