CFile::Flush()详解

file.Flush();
MSDN说是将缓存的内容写入文件。

一定要加,各种实验,包括多线程操作同一个文件等等,都证明了,这东西少不了。


Flush是将缓冲区的内容写入文件,并清空。缓冲区是4k的内容,够4k了,就会自动写入文件,不够的话就需要flush一下,如果不flush的话,文件的最后有可能会少一些内容


flush()的作用是强制将缓冲区的数据写入磁盘,只是为了确保数据尽快被写入,但是其实如果小量数据就用flush(),那么硬盘写入的机械操作时间是相对比较长的,
如果不调用flush(),缓冲区达到一定的数据量就会自动写入磁盘。
在关闭文件的时候也会把缓冲区的数据(如果有)强制写入磁盘。

如果不是多线程写同一个文件,可以不用flush(),
最后结束前记得close就可以,当然也可以最后flush一次,再close


经测试,不论最后一起close()还是,每次写完都close()耗时都很少,都不够1ms,只要加上flush()耗时立即提高了数倍某些时候会提高到100ms以上(6k),如果有缓存区,那么缓存区的大小能调整么?缓存区是达到缓存数量后就自动写入文件么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值