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

如何将String值转换为InputStreamReader?

BytearrayInputstream还可以实现以下功能:

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

您可能希望继承平台的默认字符集。

谢谢。完成。检测平台默认字符集的最佳方法是什么?

charset.defaultcharset…

或者只使用getBytes()而不使用参数…可以说,它不应该存在,但它将使用默认编码。

EDCOX1的0个方面:因为:JDK1.0没有一点理由认为这个类是"自Java 1.4"。错误的版本号特别奇怪,因为Java 1.4引入了EDCOX1×1,并且在相同的版本中引入API及其概念继承者是没有意义的。

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

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

转换字符串->字节[]或相反,而不提及字符编码几乎总是一个错误。

这可能会导致数据丢失,具体取决于默认的平台编码和字符串中的字符。为编码和解码操作指定Unicode编码会更好。详细信息请阅读:illegalargumentexception.blogspot.com/2009/05/…

在某种编码中,不需要编码参数来获取字节吗?我认为,只要为字符串getbytes调用选择与为inputstreamreader构造函数选择相同的编码,那么选择哪一个并不重要。我很肯定约阿希姆和麦克道尔在这个特定的案件中是错的。在字符串周围包装InputStreamReader不需要编码知识。

@我知道,我只是看到了这个迟来的回复。如果默认平台编码不支持字符串中的代码点,将导致数据丢失。如果您的默认编码是UTF-8,没问题。如果您在Windows上运行,则会丢失大部分Unicode集,因为这些JRE默认为传统的"ansi"编码。证据在我发布的链接中。new InputStreamReader(IOUtils.toInputStream(myString,"UTF-16"),"UTF-16")将是无损的。

万岁,用第三方图书馆把一个一行变成…一个更大的一行。更不用说把String转换成byte[]数组,把字节转换回char,然后……

实际上看一下实现:IOUtils.toInputStream(myString, StandardCharsets.UTF_8)还创建了一个bytearrayinputstream:new ByteArrayInputStream(input.getBytes(Charsets.toCharset(encod‌​ing)))。

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

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

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

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

String charset = ...; // your charset

byte[] bytes = string.getBytes(charset);

ByteArrayInputStream bais = new ByteArrayInputStream(bytes);

InputStreamReader isr = new InputStreamReader(bais);

很好,但是第二行应该是byte[] bytes = charset.getBytes();。

我不这么认为。在我的示例中,string是希望使用inputstreamreader访问的字符串的实例。

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

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

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

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

你可以试试仙人掌:

InputStream stream = new InputStreamOf(str);

那么,如果你需要一个Reader:

Reader reader = new ReaderOf(stream);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值