为什么 StringBufferInputStream 文档推荐使用 StringReader 进行 String 到 Stream 的转换?
Why does StringBufferInputStream doc recommend StringReader for String to Stream conversion?
与 answered repeatedly 一样,您可以轻松地将 String
转换为 InputStream
。
在浏览 Java 8 文档时,我发现了长期弃用的 StringBufferInputStream
class,其中指出
As of JDK 1.1, the preferred way to create a stream from a string is via the StringReader
class.
这里指的是什么方式?在非默认库中有几种方法需要 classes,例如 Apache Commons IO 中容易出错的 ReaderInputStream
,但我正在寻找文档中提到的首选方法。其他问题中引用的解决方案足以满足我的用例,但我仍然想知道文档引用的内容。
更新
显然这是一个尚未修复的 16 year old bug。 link 中建议的解决方案是使用已弃用的 class。我无法想象这就是文档所说的意思。
我不知道 javadoc 部分的答案,但您指出的第一个答案是合理的:只需使用 String.getBytes(encoding)
获取字节数组,然后使用 ByteArrayInputStream
。
但通常更重要的问题是:你到底为什么需要这样的转换?在一个设计良好的系统中,你永远不需要朝这个方向前进:它违反了正常的事物流程,在 JDK 内你处理 char
s 和 String
s,而在外部byte
s 和 Stream
s。所以在这个方向上的转换是非常罕见的,JDK 似乎没有必要有明确的支持。
与 answered repeatedly 一样,您可以轻松地将 String
转换为 InputStream
。
在浏览 Java 8 文档时,我发现了长期弃用的 StringBufferInputStream
class,其中指出
As of JDK 1.1, the preferred way to create a stream from a string is via the
StringReader
class.
这里指的是什么方式?在非默认库中有几种方法需要 classes,例如 Apache Commons IO 中容易出错的 ReaderInputStream
,但我正在寻找文档中提到的首选方法。其他问题中引用的解决方案足以满足我的用例,但我仍然想知道文档引用的内容。
更新
显然这是一个尚未修复的 16 year old bug。 link 中建议的解决方案是使用已弃用的 class。我无法想象这就是文档所说的意思。
我不知道 javadoc 部分的答案,但您指出的第一个答案是合理的:只需使用 String.getBytes(encoding)
获取字节数组,然后使用 ByteArrayInputStream
。
但通常更重要的问题是:你到底为什么需要这样的转换?在一个设计良好的系统中,你永远不需要朝这个方向前进:它违反了正常的事物流程,在 JDK 内你处理 char
s 和 String
s,而在外部byte
s 和 Stream
s。所以在这个方向上的转换是非常罕见的,JDK 似乎没有必要有明确的支持。