我可以轻松转换InputStream
为BufferedReader
使用番石榴吗?
我正在寻找类似的东西:
InputStream inputStream = ...;
BufferedReader br = Streams.newBufferedReader(inputStream);
我可以使用Files.newReader(File file, Charset charset)
. 这很酷,我想使用InputStream
.
更新:
使用CharStreams.newReaderSupplier
对我来说似乎很冗长。如果我错了,请纠正我,但为了轻松转换InputStream
为BufferedReader
使用 Guava,我必须这样做:
final InputStream inputStream = new FileInputStream("/etc/fstab");
Reader bufferedReader = new BufferedReader(CharStreams.newReaderSupplier(new InputSupplier<InputStream>(){
public InputStream getInput() throws IOException {
return inputStream;
}
}, Charset.defaultCharset()).getInput());
当然我可以创建助手做某事:
return new BufferedReader(new InputStreamReader(inputStream));
但是我认为 Guava IO 应该提供这样的帮助。我可以为 File 实例做这样的把戏。为什么我不能为 InputStream?
// Guava can do this
Reader r = Files.newReader(new File("foo"), charset);
// but cannot do this
Reader r = SomeGuavaUtil.newReader(inputStream, charset);
纠正我如果我错了,但在我看来就像缺少 API。