이 경우 BufferedReader를 사용하는 이유는 무엇입니까?
-
06-09-2019 - |
문제
다음 코드에서 stringReader 주위에 버퍼링 리더를 사용하는 것과 stringReader 만 사용하는 것의 차이점은 무엇입니까? 두 예제의 2 행에 DOM을로드함으로써 버퍼드 리더가 필요하지 않은 것 같습니다.
InputSource is = new InputSource(new StringReader(html));
Document dom = XMLResource.load(is).getDocument();
vs
InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
Document dom = XMLResource.load(is).getDocument();
해결책
이 특별한 경우에는 아무런 이점이 없습니다. 일반적으로 두 가지 이점이 있습니다.
- OH-HANEDY
readLine()
메소드는 만 정의됩니다BufferedReader
보다는Reader
(여기서 관련이 없습니다) BufferedReader
기본 독자에 대한 개별 통화가 잠재적으로 비싸지 않은 경우 IO를 줄입니다 (즉, 많은 청크 통화가 많은 어린이보다 빠릅니다) 다시 말해서, 다시는 관련이 없습니다.StringReader
자르고 붙여 넣기 실패?
다른 팁
편집 : 아래의 원래 답변. 아래 그렇지 않습니다 이 경우, 버퍼링 된 리더가 문자열을 감싸는 StringReader를 감싸기 때문에 관련성. 따라서 버퍼링을 수행 할 수 없으며 버퍼링 리더가 중복되는 것처럼 보입니다. 너 ~할 수 있었다 최상의/일관된 관행을 사용하는 것에 대해 논쟁을 해보지 만, 그것은 상당히 균일 할 것입니다.
아마도 복사/붙여 넣기의 결과, 또는 아마도 IDE 중심 리팩터가 너무 멀리!
BufferedReader는보다 최적의 방식으로 읽으려고 시도합니다.
즉, 한 번에 더 큰 데이터 덩어리를 읽은 다음 (구성 가능한 금액) 필요에 따라 사용할 수 있도록합니다. 이렇게하면 메모리 사용을 희생하여 디스크 (등)의 판독 수가 줄어 듭니다.
Javadoc의 인용 :
일반적으로, 독자로 만든 각각의 읽기 요청은 해당 읽기 요청이 기본 문자 또는 바이트 스트림으로 만들어집니다. 따라서 Filereaders 및 InputStreamReaders와 같이 READ () 작업이 비용이 많이 드는 모든 독자 주위에 BufferedReader를 포장하는 것이 좋습니다.
BufferedReader 버전은 Filereader에서 읽는 데 사용 된 일부 코드에서 복사 되었습니까?