问题
这个问题在这里已有答案:
- 如何在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());