我不习惯在Java中使用流-如何从String
创建InputStream
?
给你:
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());
你可以这样做:
InputStream in = new ByteArrayInputStream(string.getBytes("UTF-8"));
注意UTF-8
编码。您应该指定要对字节进行编码的字符集。如果不是特别需要其他东西,通常选择UTF-8
。否则,如果您什么都不选择,您将获得在不同系统之间可能不同的默认编码。来自JavaDoc:
未指定此字符串不能用默认字符集编码时此方法的行为。当需要对编码过程进行更多的控制时,应该使用CharsetEncoder类。
InputStream in = new ByteArrayInputStream(yourstring.getBytes());
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) );
代替CharSet。使用来自Google的Guava (http://code.google.com/p/guava-libraries/wiki/StringsExplained#Charsets)的com.google.common.base.Charsets,这会稍微好一点:
InputStream is = new ByteArrayInputStream( myString.getBytes(Charsets.UTF_8) );
你使用哪个CharSet完全取决于你要对InputStream做什么,当然