除了使用 Apache Common 中的 WriterOutputStream
,是否有将 PrintStream
转换为 PrintWriter
(或反之亦然)的可能方法?
除了使用 Apache Common 中的 WriterOutputStream
,是否有将 PrintStream
转换为 PrintWriter
(或反之亦然)的可能方法?
将PrintStream
转换为PrintWriter
,请使用构造函数:PrintWriter(OutputStream out)
但是使用该构造函数会存在获取不正确编码的风险,因为PrintStream
有一个编码方式,但使用PrintWriter(OutputStream out)
将忽略它并只使用系统默认字符集。如果您不想使用系统默认值,则需要将编码保存在单独的字段或变量中,并使用:
pw = new PrintWriter(new OutputStreamWriter(myPrintStream, encoding));
其中encoding
可以是(例如)"UTF-8"
或Charset
的实例。
pw = new PrintWriter(System.out);
来模拟 System.out.println()
。 - Mr. PolywhirlOutputStreamWriter(OutputStream, Charset)
的UTF-8重载:new OutputStreamWriter(myPrintStream, StandardCharsets.UTF_8)
。这样,您就不必捕获UnsupportedEncodingException异常。 - ComFreek