2009-02-18 73 views
2

我使用ReadDirectoryChangesW窺探一個文件夾,如果我複製一個大文件到文件夾,我可以接收多個FILE_ACTION_MODIFIED消息,似乎每次Windows寫入一大塊該文件,您將獲得每次修改文件的通知。我嘗試使用CreateFile API來檢查文件是否可以通過AP打開,但有時某些文件總是被其他AP鎖定,例如,如果打開Outlook,PST將更新,但我的AP可以無法訪問它,我們必須啓動Shadow Copy才能打開它。 所以我的問題是,如何知道文件完成複製?如何知道一個文件是完成複製

回答

1

這是一個非常冒險的本質的解決方案,但在非常多毛的情況下,您可以運行輪詢循環來檢查文件的大小(或修改日期)。如果它一段時間沒有變化,你可以有點安全地假定該文件已完成複製。

編輯:這不是平均情況下的最佳解決方案,但考慮到在OP的情況下,更好的解決方案被排除在問題約束之外。在考慮下調之前,先考慮這一點。

0

當您輪詢文件大小時,請勿使用_stat/_stat64。相反,每次需要時打開該文件,並致電_filelengthi64以獲取文件的大小。 Windows操作系統不會實時更新_stat64返回的文件大小。另外,通過打開文件,您正在測試以查看任何長時間複製操作已完成。

相關問題