A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小雨皮 于 2016-6-30 13:16 编辑
  1. public static void main(String[] args) throws IOException {
  2.                 //demo1();
  3.                 //flush和close方法的区别
  4.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("致青春.mp3"));
  5.                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy.mp3"));
  6.                
  7.                 int b;
  8.                 while((b = bis.read()) != -1) {
  9.                         bos.write(b);
  10.                 }
  11.                 bis.close();
  12.                 bos.close();
  13.         }
复制代码
视频讲到这时说(20day),不关闭流,或者不刷新,就不会把最后bos.write(b)那不够8124的部分完全写完??为什么呢?请教大牛给说说,我感觉在while里面代码执行完了就应该和小数组一样都能读写完啊。。。

8 个回复

倒序浏览
?????????????
回复 使用道具 举报
?????????????
回复 使用道具 举报
66666666666666666666666666666666666
回复 使用道具 举报
还没学到,帮不到了
回复 使用道具 举报
闲着没事说两句呵呵呵  希望能帮到你
BUfferOutputStream是缓存输出流  
cpu是先将运行的结果存储在缓存中 而缓存是定期的将存储的东西写到硬盘中(不是时时的),当你程序运行结束的时候 你复制的MP3文件还在缓存中没写到硬盘中,你只有关闭它 它才能将文件写到硬盘中(系统在关闭前会默认调用Flush()方法)
回复 使用道具 举报

回帖奖励 +1

不关闭就不刷出来
回复 使用道具 举报
15242694137 发表于 2016-7-1 06:29
闲着没事说两句呵呵呵  希望能帮到你
BUfferOutputStream是缓存输出流  
cpu是先将运行的结果存储在缓存中 ...

缓存是定期的将存储的东西写到硬盘中(不是时时的),这个新鲜。谢谢啊~
回复 使用道具 举报
小雨皮 发表于 2016-7-1 10:02
缓存是定期的将存储的东西写到硬盘中(不是时时的),这个新鲜。谢谢啊~ ...

我只想说我为什么没分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马