当前位置: 首页 > 知识库问答 >
问题:

将字符串写入输出流

仲孙鸿畴
2023-03-14

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

现在,我收到了字符串。在这里向流写入的最佳方式是什么?

我应该只使用writer.write(Message.GetBytes())吗?我可以给它字节,但如果目标流是字符流,那么它会自动转换吗?

我需要用这里的一些桥流来代替吗?

共有2个答案

后源
2023-03-14

OutputStream写入字节,String提供字符。您需要定义Charset以将字符串编码为byte[]:

outputStream.write(string.getBytes(Charset.forName("UTF-8")));

UTF-8更改为您选择的字符集。

冯卓
2023-03-14

流(InputStreamOutputStream)传输二进制数据。如果要将字符串写入流,必须首先将其转换为字节,或者换句话说,对其进行编码。您可以使用String.getBytes(Charset)方法手动(如您所建议的)执行此操作,但您应该避免使用String.getBytes()方法,因为它使用JVM的默认编码,无法以可移植的方式可靠地预测这种编码。

不过,将字符数据写入流的通常方法是将流包装在writer(通常是PrintWriter)中,当您调用其write(String)(或print(String))方法时,该方法会为您执行转换。InputStreams的对应包装器是一个读取器。

printstream是一种特殊的outputstream实现,因为它还包含自动编码字符串的方法(它在内部使用编写器)。但它仍然是一条小溪。无论流是printstream还是其他流实现,都可以使用writer安全地包装您的流。没有双重编码的危险。

带有OutputStream的PrintWriter示例:

try (PrintWriter p = new PrintWriter(new FileOutputStream("output-text.txt", true))) {
    p.println("Hello");
} catch (FileNotFoundException e1) {
    e1.printStackTrace();
}
 类似资料:
  • 问题内容: 我有几个正在实现OutputStream的输出侦听器。它可以是写到stdout或文件的PrintStream,也可以写到内存或任何其他输出目标。因此,我在方法中将OutputStream指定为参数。 现在,我已经收到了字符串。在此处写入流的最佳方法是什么? 我应该只使用Writer.write(message.getBytes())吗?我可以给它提供字节,但是如果目标流是字符流,那么它

  • 我想有一个字符串的freemarker模板输出。我有一个freemarker模板文件commonTemplate。ftl。 Java代码填充模型并将输出打印到控制台App.java. 它适用于控制台输出。

  • 主要内容:字符串的输出,字符串的输入其实在《 C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符输出字符串,不能自动换行。除了字符串,printf() 还能输

  • 在高版本浏览器和 node.js 中,JavaScript 提供了 ArrayBuffer 和 Uint8Array 等 TypedArray 可以对二进制数据进行操作。但在低版本浏览器中并没有这些对象,而且这些对象没有自动伸缩性,不方便流式操作,相互转换也比较麻烦。 为兼容低版本浏览器,并且可以方便操作字符串和二进制数据,hprose for JavaScript 提供了一个 StringIO

  • wef:使用apache poi写入xlsm(Excel 2007) 当我向文件中写入一个简单的字符串时,我无法打开该文件。错误-“Excel无法打开文件“Test1.xlsm”,因为文件格式或文件扩展名无效”

  • 《 C++ cout.put()》一节中,讲解了 ostream 类提供的 put() 成员方法的用法,其用于向输出流缓冲区中添加要输出的单个字符。而在某些场景中,我们还需要输出指定的字符串,这时可以使用 ostream 类提供的 write() 成员方法。 write() 成员方法专用于向输出流缓冲区中添加指定的字符串,初学者可以简单的理解为输出指定的字符串。其语法格式如下: ostream&w