我有一个 String
,我想用作一个 InputStream
。在 Java 1.0中,您可以使用 java.io.StringBufferInputStream
,但它是 @Deprecrated
(有充分的理由——您不能指定字符集编码) :
这个类没有正确地转换 从 JDK 1.1开始, 创建流的首选方法 从一个字符串是通过
StringReader
同学们。
您可以使用 java.io.StringReader
创建 java.io.Reader
,但是没有适配器来获取 Reader
并创建 InputStream
。
我发现一个 古老的虫子需要一个合适的替代品,但是没有这样的东西存在——就我所知。
经常建议的解决办法是使用 java.lang.String.getBytes()
作为对 java.io.ByteArrayInputStream
的输入:
public InputStream createInputStream(String s, String charset)
throws java.io.UnsupportedEncodingException {
return new ByteArrayInputStream(s.getBytes(charset));
}
但这意味着将整个 String
作为一个字节数组实体化在内存中,并且违背了流的目的。在大多数情况下,这没有什么大不了的,但是我正在寻找一些能够保持流的意图的东西——尽可能少的数据在内存中被(重新)实现。