288

如何将String值转换为InputStreamReader

4

6 回答 6

333

ByteArrayInputStream也可以做到这一点:

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );

然后转换为阅读器:

InputStreamReader reader = new InputStreamReader(is);
于 2008-10-29T15:12:11.277 回答
63

我还找到了 apache commonsIOUtils类,所以:

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
于 2008-10-29T15:52:59.777 回答
32

它必须是专门的 InputStreamReader 吗?使用StringReader怎么样?

否则,您可以使用StringBufferInputStream,但由于字符转换问题(这就是您应该更喜欢 StringReader 的原因),它已被弃用。

于 2008-10-29T15:08:33.907 回答
16

与@Dan相同的问题- 为什么不是 StringReader ?

如果它必须是 InputStreamReader,那么:

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
于 2008-10-29T15:13:20.167 回答
3

您是要从 a) 中获取Reader功能InputStreamReader,还是从 b)中获取InputStream功能InputStreamReader?你不会得到 b)。 InputStreamReader不是一个InputStream

的目的InputStreamReader是获取一个InputStream- 字节源 - 并将字节解码为Reader. 您已经将数据作为字符(您的原始字符串)。将您的字符串编码为字节并将字节解码回字符将是一个冗余操作。

如果您想Reader从源代码中获取信息,请使用StringReader.

如果您正在尝试获取一个InputStream(仅给您字节),请IOUtils.toInputStream(..)按照此处其他答案的建议使用 apache commons。

于 2015-01-12T17:21:53.533 回答
2

你可以试试Cactoos

InputStream stream = new InputStreamOf(str);

然后,如果您需要Reader

Reader reader = new ReaderOf(stream);
于 2017-08-27T12:56:09.110 回答