黑马程序员技术交流社区

标题: 【黑马云青年 胡浩】为什么使用flush()方法 [打印本页]

作者: 胡浩    时间: 2013-5-27 12:49
标题: 【黑马云青年 胡浩】为什么使用flush()方法
本帖最后由 胡浩 于 2013-5-30 11:35 编辑

FileWriter fw=new FileWriter(new File("aaa.txt"));
fw.write(97);
fw.flush();
为什么一定刷新,

FileOutPutStream fos=new FileOutputStream(new File("aaa.txt"));
fos.write(97);
不需要刷新就可以将文件写入目标路径


作者: mvplee    时间: 2013-5-27 13:24
InputStream的read 方法,使用零个参数的 read 方法,一次读取一个字节,并将之放入该数组。
OutputStream的wirte 将指定字节写入当前输出流。
read 一次一个字节当然不要flush
wirte 一次多个就要flush
    InputStream在read的时候,都是即时读取的,执行完马上就执行IO操作并返回数据。
    而OutputStream为了提高效率都不是即时输出的,write会把数据先写到缓存里面,积累够了再一次性做IO输出,所以你虽然write了,但数据还没传出去,flush方法就是强制对buffer里面的内容做IO输出。

作者: ozt6719393    时间: 2013-5-27 13:56
如果你在程序的结尾关闭了FileWrite,就可以不用flush了,但是不建议,作为程序员,一定要养成好的习惯,写一次,刷新一次
作者: Miss小强    时间: 2013-5-27 14:50
一句话解释清楚:
所谓刷新是由于有了缓存;
FileWriter底层有缓存,请参看api文档;
FileOutstream没有使用缓存(严格意义上讲也有缓存,但是这个缓存是跟操作系统相关的,不是我们的缓存数组);他有一个子类
Buffered*就启用了缓存。因此要刷新。。。
还是强烈建议参看api文档。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2