【问题标题】:Can one write to a wrapped Stream in java?可以在 java 中写入包装的 Stream 吗?
【发布时间】:2015-03-14 15:31:50
【问题描述】:

我正在为一个任务编写一个 java 服务器,当我同时写入一个包装流和一个包装流时,我观察到一些奇怪的行为,这会导致任何问题吗?据我所知,它可以,但如何?请赐教。

举个例子:

OutputStream os = new OutputStream(...);
PrintWriter pw = new PrintWriter(os);

我想在 PrintWriter 和 OutputStream 中都写。

【问题讨论】:

  • 你的意思是直接用PrintWriterOutputStream写?
  • 没错,这是个坏主意吗?

标签: java stream


【解决方案1】:

罢工>

要从基于字节的流传输到基于字符的流,需要使用OutputStreamWriter

OutputStreamWriter 是从字符流到字节流的桥梁。

那就是:

OutputStream os = ...
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
PrintWriter pw = new PrintWriter(osw);

我认为问题在于您需要指定编码,因为构造函数PrintWriter(OutputStream out) 使用的默认编码可能不适合您的数据输入:

OutputStream os = ...
PrintWriter pw = new PrintWriter(os, "UTF-8");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2017-06-26
    • 2022-11-14
    • 2021-03-14
    • 2012-11-18
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多