我可以轻松地使用Guava将
我正在寻找类似于以下内容的东西:
我可以使用
当然,我可以创建一个辅助程序来执行以下操作:
然而,我认为Guava IO应该提供这样的助手程序。我可以为File实例执行此操作。为什么不能为InputStream执行呢?
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缺失了。