如何在java中将字符串转换为InputStreamReader?
如何将如何在java中将字符串转换为InputStreamReader?,java,string,stream,Java,String,Stream,如何将字符串值转换为InputStreamReader?它必须是专门的InputStreamReader吗?使用如何 否则,您可以使用,但由于字符转换问题(这就是您应该更喜欢StringReader的原因),它已被弃用。还可以实现以下功能: InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) ); 然后转换为读卡器: InputStreamReader reader = new InputStreamR
字符串
值转换为InputStreamReader
?它必须是专门的InputStreamReader吗?使用如何
否则,您可以使用,但由于字符转换问题(这就是您应该更喜欢StringReader的原因),它已被弃用。还可以实现以下功能:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
然后转换为读卡器:
InputStreamReader reader = new InputStreamReader(is);
同样的问题-为什么不是StringReader
如果必须输入StreamReader,则:
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));
您是否试图从InputStreamReader
中获取a)Reader
功能,或从InputStreamReader
中获取b)InputStream
功能?你得不到b)InputStreamReader
不是InputStream
InputStreamReader
的目的是获取一个InputStream
(字节源),并以读取器的形式将字节解码为字符。您已经将数据设置为字符(原始字符串)。将字符串编码为字节并将字节解码回字符将是一个冗余操作
如果您试图从源代码中获取读取器
,请使用StringReader
如果您试图获取一个InputStream
(只提供字节),请按照此处其他答案的建议,使用apache commonsIOUtils.toInputStream(..)
。您可以尝试:
然后,如果您需要读卡器
:
Reader reader = new ReaderOf(stream);
您可能希望继承平台的默认字符集。谢谢。完成。检测plataform默认字符集的最佳方法是什么?或者只使用getBytes()而不使用参数。。。可以说它不应该存在,但它将使用默认编码。:Since:JDK1.0没有任何理由假设这个类是“Since java1.4”。由于Java 1.4引入了NIO
,这个错误的版本号特别奇怪,在同一版本中引入API及其概念上的后续版本毫无意义。转换字符串->字节[]或反之亦然,而不提及字符编码几乎总是一个错误。这可能会导致数据丢失,取决于默认平台编码和字符串中的字符。为编码和解码操作指定Unicode编码会更好。阅读本文了解更多详细信息:编码参数不是只需要在特定编码中获取字节吗?我认为,只要为String#getBytes调用选择与为InputSTreamReader构造函数选择相同的编码,那么选择哪种编码并不重要。我很肯定约阿希姆和麦克道尔在这个具体案件中是错的。将InputStreamReader包装成字符串不需要任何编码知识。@Stijn de Witt-我知道,但我刚刚看到了这个迟来的回答。如果默认平台编码不支持字符串中的代码点,将导致数据丢失。如果默认编码为UTF-8,则没有问题。如果您在Windows上运行,您将丢失大部分Unicode集,因为这些JRE默认为传统的“ANSI”编码。证据在我发布的链接中<代码>新的InputStreamReader(IOUtils.toInputStream(myString,“UTF-16”),“UTF-16”)
将是无损的。万岁,使用第三方库将一个一行程序转换为…一个更大的一行程序。不要说将字符串
转换成字节[]
数组以将字节转换回字符
s是无用的,那么…很好,但是第二行应该是字节[]字节=charset.getBytes()我不这么认为,阿披实。在我的示例中,string是希望使用InputStreamReader访问的string的实例。
Reader reader = new ReaderOf(stream);