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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡浩 于 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);
不需要刷新就可以将文件写入目标路径

3 个回复

倒序浏览
InputStream的read 方法,使用零个参数的 read 方法,一次读取一个字节,并将之放入该数组。
OutputStream的wirte 将指定字节写入当前输出流。
read 一次一个字节当然不要flush
wirte 一次多个就要flush
    InputStream在read的时候,都是即时读取的,执行完马上就执行IO操作并返回数据。
    而OutputStream为了提高效率都不是即时输出的,write会把数据先写到缓存里面,积累够了再一次性做IO输出,所以你虽然write了,但数据还没传出去,flush方法就是强制对buffer里面的内容做IO输出。
回复 使用道具 举报
如果你在程序的结尾关闭了FileWrite,就可以不用flush了,但是不建议,作为程序员,一定要养成好的习惯,写一次,刷新一次
回复 使用道具 举报
一句话解释清楚:
所谓刷新是由于有了缓存;
FileWriter底层有缓存,请参看api文档;
FileOutstream没有使用缓存(严格意义上讲也有缓存,但是这个缓存是跟操作系统相关的,不是我们的缓存数组);他有一个子类
Buffered*就启用了缓存。因此要刷新。。。
还是强烈建议参看api文档。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马