如何从 java.lang.String 获取 java.io.InputStream?
2022-08-31 10:45:41
我有一个我想用作.在Java 1.0中,您可以使用java.io.StringBufferInputStream
,但这种情况一直存在(有充分的理由 - 您无法指定字符集编码):String
InputStream
@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