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

本帖最后由 小雨皮 于 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 个回复

正序浏览
小雨皮 发表于 2016-7-1 10:02
缓存是定期的将存储的东西写到硬盘中(不是时时的),这个新鲜。谢谢啊~ ...

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

缓存是定期的将存储的东西写到硬盘中(不是时时的),这个新鲜。谢谢啊~
回复 使用道具 举报

回帖奖励 +1

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