如何在Java中将string转换为InputStreamReader?
如何将String
值转换为InputStreamReader
?
ByteArrayInputStream也有诀窍:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
我也发现了apache的commons IOUtils
类,所以:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
它是否必须特别是一个InputStreamReader? 如何使用StringReader ?
否则,你可以使用StringBufferInputStream ,但由于字符转换问题而不推荐使用(这就是为什么你应该更喜欢StringReader)。
同样的问题作为@丹 – 为什么不StringReader?
如果必须是InputStreamReader,那么:
String charset = ...; // your charset byte[] bytes = string.getBytes(charset); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); InputStreamReader isr = new InputStreamReader(bais);
你是否试图从InputStreamReader
获取a) Reader
function,或b) InputStream
function? 你不会得到b)。 InputStreamReader
不是一个InputStream
。
InputStreamReader
的目的是获得一个InputStream
(一个字节的来源),并以Reader
的forms将这些字节解码为字符。 你已经有你的数据作为字符(你的原始string)。 将string编码为字节并将字节解码回字符将是一种冗余操作。
如果你想从你的源代码中获得一个Reader
,使用StringReader
。
如果你正在试图得到一个InputStream
(它只能给你一个字节),可以使用apache的commons IOUtils.toInputStream(..)
。
你可以尝试Cactoos :
InputStream stream = new InputStreamOf(str);
那么,如果你需要一个Reader
:
Reader reader = new ReaderOf(stream);