如何从一个string创build一个InputStream?
我不习惯使用Java中的stream – 我如何从一个String
创build一个InputStream
?
干得好:
InputStream is = new ByteArrayInputStream( myString.getBytes() );
更新对于多字节支持使用(感谢Aaron Waibel的评论):
InputStream is = new ByteArrayInputStream(Charset.forName("UTF-16").encode(myString()).array());
请参阅ByteArrayInputStream手册。
在上面的String#getBytes(charset)方法中使用字符集参数是安全的。
你可以这样做:
InputStream in = new ByteArrayInputStream(string.getBytes("UTF-8"));
请注意UTF-8
编码。 你应该指定你想要编码字节的字符集。 如果你没有特别需要的话,selectUTF-8
是很常见的。 否则,如果你没有select任何东西,你会得到不同系统之间的默认编码。 从JavaDoc :
此string不能在默认字符集中编码时,此方法的行为未指定。 当需要对编码过程进行更多的控制时,应该使用CharsetEncoder类。
InputStream in = new ByteArrayInputStream(yourstring.getBytes());
使用Google的Guava(http://code.google.com/p/guava-libraries/wiki/StringsExplained#Charsets)中的com.google.common.base.Charsets代替CharSet.forName,稍微好一些:;
InputStream is = new ByteArrayInputStream( myString.getBytes(Charsets.UTF_8) );
当然,你使用的CharSet完全取决于你要用InputStream做什么。
Java 7+
可以利用StandardCharsets
JDK类:
String str=... InputStream is = new ByteArrayInputStream(StandardCharsets.UTF_16.encode(str).array());
从Java 7开始,您可以使用以下习惯用法:
String someString = "..."; InputStream is = new ByteArrayInputStream( someString.getBytes(StandardCharsets.UTF_8) );