如何从字符串创建InputStream ?



我不习惯在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做什么,当然

相关内容

  • 没有找到相关文章

最新更新