将字符串写入输出流

我有几个正在实现OutputStream的输出侦听器。它可以是写到stdout或文件的PrintStream,也可以写到内存或任何其他输出目标。因此,我在方法中将OutputStream指定为参数。

现在,我已经收到了字符串。在此处写入流的最佳方法是什么?

我应该只使用Writer.write(message.getBytes())吗?我可以给它提供字节,但是如果目标流是字符流,那么它将自动转换吗?

我是否需要在这里使用一些桥接流?

回答:

流(InputStreamOutputStream)传输 二进制 数据。如果要向流中写入字符串,则必须首先将其转换为字节,或者换句话说,对其

进行编码

。您可以使用String.getBytes(Charset)方法手动(按照您的建议)进行操作,但应避免使用该String.getBytes()方法,因为该方法使用了JVM的默认编码,因此无法以可移植的方式可靠地对其进行预测。

不过,将字符数据写入流的通常方法是将流包装在中Writer(通常是PrintWriter),当您调用其write(String)(或print(String))方法时,将为您进行转换。InputStreams的相应包装是Reader。

PrintStream``OutputStream从某种意义上说,它是一种特殊的实现,它还包含自动编码字符串的方法(它在内部使用编写器)。但这仍然是一条小溪。无论是PrintStreamStream实现还是其他实现,都可以用writer安全地包装流。没有双重编码的危险。

具有OutputStream的PrintWriter的示例:

try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {

p.println("Hello");

} catch (FileNotFoundException e1) {

e1.printStackTrace();

}

以上是 将字符串写入输出流 的全部内容, 来源链接: utcz.com/qa/403105.html

回到顶部