如何将字符串值转换为InputStreamReader?
当前回答
你试图得到a)阅读器功能的InputStreamReader,或b) InputStream功能的InputStreamReader?你不会得到b). InputStreamReader不是一个InputStream。
InputStreamReader的目的是获取一个InputStream(字节源),并以Reader的形式将字节解码为字符。您已经拥有了作为字符的数据(原始字符串)。将字符串编码为字节并将字节解码回字符将是一个冗余操作。
如果你想从源代码中获取一个Reader,请使用StringReader。
如果你试图获得一个InputStream(只给你字节),使用apache公共IOUtils.toInputStream(..),正如这里的其他答案所建议的那样。
其他回答
它必须是一个特定的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类,所以:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
你试图得到a)阅读器功能的InputStreamReader,或b) InputStream功能的InputStreamReader?你不会得到b). InputStreamReader不是一个InputStream。
InputStreamReader的目的是获取一个InputStream(字节源),并以Reader的形式将字节解码为字符。您已经拥有了作为字符的数据(原始字符串)。将字符串编码为字节并将字节解码回字符将是一个冗余操作。
如果你想从源代码中获取一个Reader,请使用StringReader。
如果你试图获得一个InputStream(只给你字节),使用apache公共IOUtils.toInputStream(..),正如这里的其他答案所建议的那样。
推荐文章
- 将JSON字符串转换为HashMap
- web - inf在Java EE web应用程序中用于什么?
- Java 8: Lambda-Streams,过滤方法与异常
- 将JsonNode转换为POJO
- 如何查看IntelliJ中的编译错误列表?
- Java SimpleDateFormat("yyyy-MM-dd' t ' hh:mm:ss' z '")给出的时区为IST
- 杰克逊克服下划线,支持骆驼案
- List、List<?>, List<T>, List<E>, List<Object>
- 在Java中转换字符串到日历对象
- Ruby数组到字符串的转换
- 在java中使用wait()和notify()的简单场景
- 增强的for循环中的Null检查
- c# vs Java Enum(适合c#新手)
- 如何在不强制转换的情况下将double转换为long ?
- for循环和for-each循环在性能上有区别吗?