在刚执行完写数据到文件后,执行强制关机操作,会出现数据丢失情况。考虑是缓存造成的,调用了QT的file.flush、close,win32的FlushFileBuffers均仍会出现问题。网上一通搜集找到了方案,使用windows的CreateFile时可以指定FILE_FLAG_WRITE_THROUGH标志,再调用WriteFile能够让数据无延迟写入磁盘。
参考资料
文件是否真的写入了磁盘?
CreateFileA函数
FlushFileBuffers函数
使用FILE_FLAG_NO_BUFFERING 标志的注意事项