如何从字符串创建输入流?

2022-08-31 08:03:23

我不习惯在Java中使用流 - 如何从?InputStreamString


答案 1

给你:

InputStream is = new ByteArrayInputStream( myString.getBytes() );

更新对于多字节支持使用(感谢Aaron Waibel的评论):

InputStream is = new ByteArrayInputStream(Charset.forName("UTF-16").encode(myString).array());

请参阅 ByteArrayInputStream 手册。

在上面的 String#getBytes(charset) 方法中使用 charset 参数是安全的。

在JDK 7+之后,您可以使用

java.nio.charset.StandardCharsets.UTF_16

而不是硬编码的编码字符串:

InputStream is = new ByteArrayInputStream(StandardCharsets.UTF_16.encode(myString).array());

答案 2

你可以这样做:

InputStream in = new ByteArrayInputStream(string.getBytes("UTF-8"));

记下编码。应指定要将字节编码到的字符集。如果您没有特别需要其他任何东西,通常会选择。否则,如果您不选择任何内容,您将获得因系统而异的默认编码。来自 JavaDocUTF-8UTF-8

此方法在无法用默认字符集编码此字符串时的行为未指定。当需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。