缓存字节流中的缓存数组以及消耗时间问题!

5e5069b6- 2020-03-30 08:04:25

int temp = 0;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(dest);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);

while ((temp = bis.read()) != -1){
System.out.println(temp);
bos.write(temp);
}



代码片段如上所示。 这是一个复制文件的操作,中间我在每次读取的时候打印了一下此次读取的字节数,理应应该是8192也就是默认的缓存数组。但输出确实这样的:



但是我自己定义的缓存数组,没有用缓冲流的话,确是正常的:


这是为什么呢?

之后我又将缓冲流中的那个输出temp语句删除,发现执行速度变快了!但还远不及我用1024缓存的快!这又是为什么呢?(文件为20mb左右)
...全文
246 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
密码测试 2020-04-02
  • 打赏
  • 举报
回复
上面说错了,bis.read()每次读取一个字节。
5e5069b6- 2020-04-02
  • 打赏
  • 举报
回复
bis不是已经为缓冲流吗?在创建的时候还需要设置每次的缓冲大小吗?
密码测试 2020-04-01
  • 打赏
  • 举报
回复
bis.read()每次读取一个字符。所以打印的是每个字符的ascii码,效率低下

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧