문제

다음 코드에서 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에서 읽는 데 사용 된 일부 코드에서 복사 되었습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top