将PrintStream转换为PrintWriter

11

除了使用 Apache Common 中的 WriterOutputStream,是否有将 PrintStream 转换为 PrintWriter (或反之亦然)的可能方法?


你不能在PrintWriter中包装PrintStream吗? - nhahtdh
你的目标是什么? - Bhavik Ambani
我的目标是将PrintStream转换为PrintWriter,而不是将apache.jar添加到我的代码中。 - MBZ
对于相反的情况,请参见:https://dev59.com/sFLTa4cB1Zd3GeqPXiXE - fgb
1个回答

18

PrintStream转换为PrintWriter,请使用构造函数:PrintWriter(OutputStream out)

但是使用该构造函数会存在获取不正确编码的风险,因为PrintStream有一个编码方式,但使用PrintWriter(OutputStream out)将忽略它并只使用系统默认字符集。如果您不想使用系统默认值,则需要将编码保存在单独的字段或变量中,并使用:

pw = new PrintWriter(new OutputStreamWriter(myPrintStream, encoding));

其中encoding可以是(例如)"UTF-8"Charset的实例。


3
你可以通过 pw = new PrintWriter(System.out); 来模拟 System.out.println() - Mr. Polywhirl
最好使用OutputStreamWriter(OutputStream, Charset)的UTF-8重载:new OutputStreamWriter(myPrintStream, StandardCharsets.UTF_8)。这样,您就不必捕获UnsupportedEncodingException异常。 - ComFreek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接