黑马程序员技术交流社区
标题:
关于IO缓冲区的问题
[打印本页]
作者:
冯大卫
时间:
2014-9-6 22:52
标题:
关于IO缓冲区的问题
FileWriter fw = new FileWriter("test.txt");
for (int i = 0; i < 10*1024; i++) {
fw.write('a');
}
Thread.sleep(20000);
/*
* 趁线程睡觉的20秒钟时间,我到文件夹打开test.txt一看,已经有8192字节的数据了,此时fw还没有close.
* 这是否说明FileWriter类的内部已经有一个8129字节的缓冲区?
* 如果是这样,那么使用缓冲区大小小于8k的BufferedWriter还有意义吗?
*/
fw.close();
/*
*而且,在毕老师的视频里,我见到如下的代码片段:(出于简便,没有做异常处理)
*/
BufferedReader bufr = new BufferedReader(new FileReader("a.txt)"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();//每新增一行就刷掉缓冲区,这样是否有违缓冲区的初衷?
}
复制代码
作者:
晋一峰
时间:
2014-9-6 22:59
如果不刷新缓冲区, 只在最后依赖释放资源的自动刷新的时候,如果你的数据量过大超出了缓冲区范围,自动刷新时只能将缓冲区现有的内容输入到目标文件,这会造成数据丢失
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2