【问题标题】:new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true)))新 PrintWriter(新 BufferedWriter(新 PrintWriter(s.getOutputStream, true)))
【发布时间】:2012-02-19 21:21:28
【问题描述】:
我想知道是否可以这样做
new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true)))
在 Java 中,s 是一个 Socket?因为不可能从输出流创建 BufferedWriter,所以我用 PrintWriter 包装了输出流。但我想缓冲我的打印输出,所以我用 BufferedWriter 包装它。但最终我想使用 printWriter 打印,所以我用 PrintWriter 再次包装它。这在 Java 中合法吗?谢谢!
【问题讨论】:
标签:
java
sockets
file-io
printwriter
bufferedwriter
【解决方案1】:
这是合法的,但很笨拙。您可以改为缓冲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);
}
缓冲已经存在!
【解决方案2】:
OutputStreamWriter 是您要查找的课程。只需将流和编码传递给它,例如"UTF-8"。
new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), encoding)), true)