【问题标题】: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) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2014-01-23
      • 2023-04-01
      • 2017-01-06
      相关资源
      最近更新 更多