2012-02-19 3 views
3
내가 궁금

IT는 소켓들입니다 자바새로운 PrintWriter()), 진정한 새로운 BufferedWriter의 (새로운 PrintWriter (s.getOutputStream)

new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 

을 할 수 있습니까? 출력 스트림에서 BufferedWriter를 만드는 것은 불가능하기 때문에 PrintWriter로 출력 스트림을 래핑했습니다. 하지만 인쇄물을 버퍼링하고 싶기 때문에 BufferedWriter로 포장합니다. 하지만 결국 printWriter를 사용하여 다시 인쇄하므로 PrintWriter로 다시 포장합니다. 자바에서 합법적입니까? 감사!

+0

또한 가능한 경우 어떻게 동작합니까? – user700996

답변

4

이것은 합법적이지만 서투른 것입니다. 대신 OutputStream을 버퍼링 할 수 있습니다 :

public PrintWriter(OutputStream out, boolean autoFlush) { 
    this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush); 
} 

버퍼링이 이미 있습니다 :

new PrintWriter(new BufferedOutputStream(s.getOutputStream), true) 

또한 new PrintWriter(OutputStream, boolean)의 구현에 봐!

1

OutputStreamWriter은 찾고 계시는 클래스입니다. 스트림과 인코딩을 전달하면됩니다 (예 : "UTF-8").

new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), encoding)), true)