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