如何将字符串值转换为InputStreamReader?


当前回答

你试图得到a)阅读器功能的InputStreamReader,或b) InputStream功能的InputStreamReader?你不会得到b). InputStreamReader不是一个InputStream。

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

如果你想从源代码中获取一个Reader,请使用StringReader。

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

其他回答

它必须是一个特定的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);

ByteArrayInputStream也能做到这一点:

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

然后转换为读者:

InputStreamReader reader = new InputStreamReader(is);

你试图得到a)阅读器功能的InputStreamReader,或b) InputStream功能的InputStreamReader?你不会得到b). InputStreamReader不是一个InputStream。

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

如果你想从源代码中获取一个Reader,请使用StringReader。

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

你可以试试仙人掌:

InputStream stream = new InputStreamOf(str);

然后,如果你需要一个读者:

Reader reader = new ReaderOf(stream);