首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有一种简洁的方法可以在Google Guava中为InputStream创建InputSupplier?

有没有一种简洁的方法可以在Google Guava中为InputStream创建InputSupplier?
EN

Stack Overflow用户
提问于 2010-03-02 21:35:38
回答 1查看 6.8K关注 0票数 17

在Google Guava中有一些工厂方法可以用来创建InputSuppliers,例如从byte[]

代码语言:javascript
复制
ByteStreams.newInputStreamSupplier(bytes);

或从File

代码语言:javascript
复制
Files.newInputStreamSupplier(file);

是否有类似的方法来为给定的InputStream创建InputSupplier

也就是说,一种比匿名类更简洁的方式:

代码语言:javascript
复制
new InputSupplier<InputStream>() {
    public InputStream getInput() throws IOException {
        return inputStream;
    }
};

背景:我喜欢将InputStreams与Files.copy(...)ByteStreams.equal(...)一起使用。

EN

回答 1

Stack Overflow用户

发布于 2010-03-17 21:28:40

这就像将Iterator包装成Iterable一样错误,我觉得这样的东西进入库中的可能性几乎为零。正如elou所说,您可以使用ByteStreams.copy()方法,但似乎没有明显的理由对两个流执行equals()。

我理解guava作者在添加这样一个(微不足道的)方法时犹豫不决--完全(或部分地,但不知道流被留在哪里,所以它就像以后不可用一样)读取两个流,只是为了看看它们是否相同,而不对数据进行任何其他处理,这会有多常见?这些字节是否来自不可重复读取源,如网络套接字?否则,如果它只是某个地方的文件,或者是内存中的字节数组,那么还有其他方法可以进行相等性测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2363408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档