如何将String
值转换为InputStreamReader
?
6 回答
ByteArrayInputStream也可以做到这一点:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
然后转换为阅读器:
InputStreamReader reader = new InputStreamReader(is);
我还找到了 apache commonsIOUtils
类,所以:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
它必须是专门的 InputStreamReader 吗?使用StringReader怎么样?
否则,您可以使用StringBufferInputStream,但由于字符转换问题(这就是您应该更喜欢 StringReader 的原因),它已被弃用。
与@Dan相同的问题- 为什么不是 StringReader ?
如果它必须是 InputStreamReader,那么:
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
您是要从 a) 中获取Reader
功能InputStreamReader
,还是从 b)中获取InputStream
功能InputStreamReader
?你不会得到 b)。 InputStreamReader
不是一个InputStream
。
的目的InputStreamReader
是获取一个InputStream
- 字节源 - 并将字节解码为Reader
. 您已经将数据作为字符(您的原始字符串)。将您的字符串编码为字节并将字节解码回字符将是一个冗余操作。
如果您想Reader
从源代码中获取信息,请使用StringReader
.
如果您正在尝试获取一个InputStream
(仅给您字节),请IOUtils.toInputStream(..)
按照此处其他答案的建议使用 apache commons。
你可以试试Cactoos:
InputStream stream = new InputStreamOf(str);
然后,如果您需要Reader
:
Reader reader = new ReaderOf(stream);