如何将字符串转换成Java中的输入流读取器?

How do I turn a String into a InputStreamReader in java?

如何将String值转换为InputStreamReader


BytearrayInputstream还可以实现以下功能:

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


我还发现了Apache Commons IOUtils类,因此:

1
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));


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

否则,可以使用stringbufferinputstream,但由于字符转换问题(这就是为什么您应该更喜欢stringreader),它被弃用。


和@dan一样的问题-为什么不使用StringReader?

如果必须输入流阅读器,则:

1
2
3
4
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);


你是想从InputStreamReader中获得a)Reader功能,还是从InputStreamReader中获得b)InputStream功能?你不会得到b)。InputStreamReader不是InputStream

InputStreamReader的目的是取一个InputStream(字节的来源)并以Reader的形式将字节解码为字符。您已经将数据作为字符(原始字符串)保存。将字符串编码为字节并将字节解码回字符将是一个冗余操作。

如果您试图从源代码中获取Reader,请使用StringReader

如果你想得到一个InputStream(只给你字节),使用apache commons IOUtils.toInputStream(..),正如这里其他答案所建议的那样。


你可以试试仙人掌:

1
InputStream stream = new InputStreamOf(str);

那么,如果你需要一个Reader

1
Reader reader = new ReaderOf(stream);