我们使用以下步骤来复制,移动文件:
1)使用系统提供的函数CopyFile(),MoveFile()
2)打开文件使用
hFile = CreateFile(
FilePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
3)使用FlushFileBuffers(hfile)
将缓存刷新到磁盘。
添加了第2步和第3步,因为我们面临文件损坏问题,因为Windows函数CopyFile(),MoveFile()使用系统缓存,并且它在物理设备上引入了文件写入的延迟。
在使用FlushFileBuffers()之后,我们以某种方式最小化了文件损坏发生的次数。但是很少有人喜欢:
所以我需要帮助来确定我所关注的流程是否正确,或者我应该考虑其他替代方案来确保文件的一致性。
任何帮助赞赏和感谢先进
考虑使用Windows的事务性文件系统(TxF)功能,它将为您提供所需的一致性和原子性。您需要使用事务性文件I / O WIN32API方法而不是正常方法。
否则,您需要自己处理一致性。