如何在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) Readerfunction,或b) InputStreamfunction? 你不会得到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);