加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从InputStream读取并写入OutputStream

发布时间:2020-12-15 05:23:28 所属栏目:Java 来源:网络整理
导读:这应该非常简单,我搜索过谷歌,但没有看到有人提到我注意到的问题.我见过的所有东西都是基本相同的东西.像这样: byte [] buffer = new byte[256];int bytesRead = 0;while((bytesRead = input.read(buffer)) != -1){ output.write(buffer,bytesRead);} 我知
这应该非常简单,我搜索过谷歌,但没有看到有人提到我注意到的问题.我见过的所有东西都是基本相同的东西.像这样:

byte [] buffer = new byte[256];
int bytesRead = 0;
while((bytesRead = input.read(buffer)) != -1)
{
    output.write(buffer,bytesRead);
}

我知道当达到EOF时read()返回-1,但是如果文件小于缓冲区甚至相同大小怎么办?例如,正在读入一个200字节的文件.我假设它读取了200个字节,但返回-1.这与javadocs匹配,但它也意味着永远不会调用write().我本来希望实际告诉我它读取200个字节,并在下一次迭代时返回-1.

我该如何解决这个“问题”?

解决方法

仅供参考,Guava有 ByteStreams.copy(InputStream,OutputStream),您可以直接使用,也可以查看它是如何解决这个问题的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读