问题

这个问题在这里已有答案:

  • 如何在Java中将String转换为InputStreamReader? 6个答案

我不习惯使用Java中的流 - 如何从aString创建一个InputStream


#1 热门回答(131 赞)

干得好:

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 热门回答(32 赞)

你可以这样做:

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

注意28288526编码。你应该指定要编码的字节的字符集。选择UTF-8是很常见的,如果你不需要其他任何东西。否则,如果你不选择任何内容,你将获得可在系统之间变化的默认编码。来自JavaDoc

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


#3 热门回答(4 赞)

InputStream in = new ByteArrayInputStream(yourstring.getBytes());

原文链接