FlushFileBuffers是否一定需要执行? - C++ Builder / Windows SDK/API
我现在有个程序频繁的往dbf文件写记录(WriteFile),写完一条记录之后,是否一定需要执行FlushFileBuffers?
同步会有另为一个程序不断的读取这个文件。那么如果我不执行FlushFileBuffers,会否对读取记录造成影响?
比如读取到了半条记录之类的。
由于FlushFileBuffers的速度很慢,导致整个写dbf的速度很慢,所以想考虑吧FlushFileBuffers去掉。
谢谢大家。
[解决办法]
API:WriteFile的第4个参数,返回写到文件中的字节数。判断这个字节数和要写入的缓冲长度是否相等再结合WriteFile函数的返回值,如果成功的写到了文件中,可以不用每次调用FlushFileBuffers。
[解决办法]
会不会不是FlushFileBuffers的速度慢,而只是文件写硬盘的速度慢?看帮助FlushFileBuffers貌似只是强制写盘的。
[解决办法]
不用每次都用FlushFileBuffers,它占用系统资源。
[解决办法]
不执行FlushFileBuffers,不会对读取记录造成影响。
写文件有缓冲机制,这样可以提高读写速度,如果写完就Flush,相当于缓冲机制被取消了,当然变慢了。我想原程序这样写的目的应该是防止意外关机(如断电)造成的错误。