我不习惯在 Java 中使用流——我如何从 String创建一个 InputStream?
String
InputStream
给你:
InputStream is = new ByteArrayInputStream( myString.getBytes() );
更新 用于多字节支持(感谢 Aaron Waibel的评论) :
InputStream is = new ByteArrayInputStream(Charset.forName("UTF-16").encode(myString).array());
请参阅 字节数组输入流手册。
在上面的 字符串 # getBytes (charset)方法中使用字符集参数是安全的。
在 JDK7 + 之后,您可以使用
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:
UTF-8
当此字符串不能编码为默认字符集时,此方法的行为未指定。当需要对编码过程进行更多控制时,应该使用 CharsetEncoder 类。
InputStream in = new ByteArrayInputStream(yourstring.getBytes());
使用 com.Google.common.base 代替 charSet.forName,使用谷歌的 Guava ( http://code.Google.com/p/Guava-libraries/wiki/stringsexplained#Charsets )的字符更好一些:
InputStream is = new ByteArrayInputStream( myString.getBytes(Charsets.UTF_8) );
当然,您使用哪个 CharSet 完全取决于您将如何处理 InputStream。
Java7 +
可以利用 StandardCharsets JDK 类:
StandardCharsets
String str=... InputStream is = new ByteArrayInputStream(StandardCharsets.UTF_16.encode(str).array());
从 Java7开始,您可以使用以下习惯用法:
String someString = "..."; InputStream is = new ByteArrayInputStream( someString.getBytes(StandardCharsets.UTF_8) );