[英]Challenges maintaining file consistency while copy & move file operations with FlushFileBuffer()
我們使用以下步驟來復制、移動文件:
使用系統提供的函數CopyFile()
, MoveFile()
使用打開文件
hFile = CreateFile( FilePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
使用FlushFileBuffers(hfile)
將緩存刷新到磁盤。
添加第 2 步和第 3 步是因為我們面臨文件損壞問題,因為 Windows 函數CopyFile()
、 MoveFile()
使用系統緩存,並且它引入了物理設備上文件寫入的延遲。
使用FlushFileBuffers()
我們以某種方式最大限度地減少了文件損壞的發生次數。 但還有幾個像:
所以我需要幫助來確定我遵循的流程是否正確,或者我應該考慮其他替代方案來確保文件一致性。
考慮使用 Windows 的事務性文件系統 (TxF) 功能,它將為您提供所需的一致性和原子性。 您需要使用事務性文件 I/O WIN32API 方法而不是普通方法。
否則,您需要自己處理一致性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.