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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯大卫 中级黑马   /  2014-9-6 22:52  /  655 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. FileWriter fw = new FileWriter("test.txt");
  2.                     for (int i = 0; i < 10*1024; i++) {
  3.                                 fw.write('a');
  4.                    }
  5.                    Thread.sleep(20000);
  6.                 /*
  7.                  * 趁线程睡觉的20秒钟时间,我到文件夹打开test.txt一看,已经有8192字节的数据了,此时fw还没有close.
  8.                  * 这是否说明FileWriter类的内部已经有一个8129字节的缓冲区?
  9.                  * 如果是这样,那么使用缓冲区大小小于8k的BufferedWriter还有意义吗?                  
  10.                  */
  11.                    fw.close();
  12.                 /*
  13.                  *而且,在毕老师的视频里,我见到如下的代码片段:(出于简便,没有做异常处理)
  14.                  */
  15.                 BufferedReader bufr = new BufferedReader(new FileReader("a.txt)"));
  16.                 BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
  17.                 String line = null;
  18.                 while((line=bufr.readLine())!=null){
  19.                                 bufw.write(line);
  20.                                 bufw.newLine();
  21.                                 bufw.flush();//每新增一行就刷掉缓冲区,这样是否有违缓冲区的初衷?
  22. }
复制代码

1 个回复

倒序浏览
如果不刷新缓冲区, 只在最后依赖释放资源的自动刷新的时候,如果你的数据量过大超出了缓冲区范围,自动刷新时只能将缓冲区现有的内容输入到目标文件,这会造成数据丢失
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马