2012-02-19 123 views
3

我想知道是否有可能做的新PrintWriter(新的BufferedWriter(新的PrintWriter(s.getOutputStream,真)))

new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 
在Java中,其中s是一個Socket

?因爲從輸出流創建BufferedWriter是不可能的,所以我用PrintWriter封裝了輸出流。但我想緩衝我的打印輸出,所以我用BufferedWriter包裝它。但最終我想用printWriter打印,所以我用PrintWriter再次打包。這在Java中是合法的嗎?謝謝!

+0

此外,如果這是可能的,它的行爲是什麼? – user700996 2012-02-19 21:21:59

回答

4

這是合法但笨拙。您可以緩衝OutputStream代替:

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

也有看的new PrintWriter(OutputStream, boolean)實現:

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

緩衝已經存在!

1

OutputStreamWriter是您正在尋找的課程。只需傳遞一個流和一個編碼,例如"UTF-8"

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