【问题标题】:Why does StringBufferInputStream doc recommend StringReader for String to Stream conversion?为什么 StringBufferInputStream 文档推荐 StringReader 进行字符串到流的转换?
【发布时间】:2015-08-08 17:08:47
【问题描述】:

answered repeatedly 一样,您可以轻松地将String 转换为InputStream

在浏览 Java 8 文档时,我遇到了早已弃用的 StringBufferInputStream 类,它指出

从 JDK 1.1 开始,从字符串创建流的首选方法是通过 StringReader 类。

这是指什么方式?有几种方法需要非默认库中的类,例如来自 Apache Commons IO 的容易出错的ReaderInputStream,但我正在寻找文档中提到的首选方法。其他问题中引用的解决方案对于我的用例来说已经足够了,但我仍然想知道文档所引用的内容。

更新

显然这是一个尚未修复的16 year old bug。链接中建议的解决方案是使用已弃用的类。我无法想象这就是文档所说的内容。

【问题讨论】:

  • 您需要了解byte 源和char 源之间的区别,以及将一个源转换为另一个的惊人复杂性。 Reader API 旨在解决出现的许多问题。 ReaderInputStream 有点笨拙和容易出错......
  • 这不是 Java 8 独有的。正如您所注意到的,该类早已被弃用,并且此消息自 JDK 1.1 以来就存在。我不会太相信已弃用文档中的建议。

标签: java string type-conversion inputstream


【解决方案1】:

我不知道javadoc部分的答案,但你指出的第一个答案是一个合理的答案:只需使用String.getBytes(encoding)获取字节数组,然后使用ByteArrayInputStream

但通常更重要的问题是:您到底为什么需要这种转换?在一个设计良好的系统中,您永远不需要朝这个方向前进:在 JDK 内部处理chars 和Strings,而在外部处理bytes 和@987654326,这违反了正常的流程@s。所以这个方向的转换非常少见,JDK 似乎没有必要明确支持。

【讨论】:

  • 你是对的。文档是否声称支持此功能,即使它确实不支持?
  • 对我来说,这听起来确实像是应该删除的剩余评论。我想不出它会指的是什么。 :-(
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 2012-11-21
  • 2013-07-19
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2010-12-04
  • 2011-01-10
相关资源
最近更新 更多