如何在Java中将字符串转换为InputStream?


Answers:


1409

像这样:

InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

请注意,这假设您需要一个InputStream,该InputStream是表示原始字符串的字节流,这些原始字符串编码为UTF-8

对于小于7的Java版本,请替换StandardCharsets.UTF_8"UTF-8"


1
这样做时,此字符集是否不会丢失:字符串->字节-> ByteArrayInputStream?例如,在“ü”上尝试时,字节将具有正确的字母,但是ByteArrayInputStream将失去正确的转换。还是我错了?
乔纳森·拉莫斯

20
StandardCharsets需要最低API等级19
Nantoka

3
@JonathanRamos不能保持转换。取决于将字节解码回字符串的方式。
Cruncher 2014年

26
@Nantoka可以将Charset.forName(“ UTF-8”)用作任何API级别,而不是StandardCharsets.UTF_8。
PJ_Finnegan

它的工作只是我添加String newStr = URLDecoder.decode(URLEncoder.encode(response,“ iso8859-1”),“ UTF-8”); (utf8)
sirmagid

275

我发现使用Apache Commons IO使我的生活更加轻松。

String source = "This is the source of my input stream";
InputStream in = org.apache.commons.io.IOUtils.toInputStream(source, "UTF-8");

您可能会发现该库还提供了许多其他快捷方式,可以在项目中使用这些常用任务。


5
他们使用了新的ByteArrayInputStream(exampleString.getBytes(“ UTF-8”))。因此,将优化使用InputStream流的方式= new ByteArrayInputStream(exampleString.getBytes(“ UTF-8”));
Pankaj Kumar

9
@PankajKumar:Java的JIT编译器能够内联。
安德鲁·怀特

8
使用未指定编码的方法是一个糟糕的主意……
b1nary.atr0phy 2013年

2
@ b1naryatr0phy:Apache公用程序包含此方法的另一种形式,该形式将编码作为第二个参数(您是对的,更可取):InputStream in = IOUtils.toInputStream(source,“ UTF-8”);
Cuga 2014年

8
您可以使用StandardCharsets.UTF_8定义而不是纯文本。
douglaslps 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.