在Google Guava中有一些工厂方法可以用来创建InputSuppliers,例如从byte[]
ByteStreams.newInputStreamSupplier(bytes);
或从File
Files.newInputStreamSupplier(file);
是否有类似的方法来为给定的InputStream
创建InputSupplier
?
也就是说,一种比匿名类更简洁的方式:
new InputSupplier<InputStream>() {
public InputStream getInput() throws IOException {
return inputStream;
}
};
背景:我喜欢将InputStreams与Files.copy(...)
或ByteStreams.equal(...)
一起使用。
发布于 2010-03-17 21:28:40
这就像将Iterator包装成Iterable一样错误,我觉得这样的东西进入库中的可能性几乎为零。正如elou所说,您可以使用ByteStreams.copy()方法,但似乎没有明显的理由对两个流执行equals()。
我理解guava作者在添加这样一个(微不足道的)方法时犹豫不决--完全(或部分地,但不知道流被留在哪里,所以它就像以后不可用一样)读取两个流,只是为了看看它们是否相同,而不对数据进行任何其他处理,这会有多常见?这些字节是否来自不可重复读取源,如网络套接字?否则,如果它只是某个地方的文件,或者是内存中的字节数组,那么还有其他方法可以进行相等性测试。
https://stackoverflow.com/questions/2363408
复制相似问题