我使用ReadDirectoryChangesW窺探一個文件夾,如果我複製一個大文件到文件夾,我可以接收多個FILE_ACTION_MODIFIED消息,似乎每次Windows寫入一大塊該文件,您將獲得每次修改文件的通知。我嘗試使用CreateFile API來檢查文件是否可以通過AP打開,但有時某些文件總是被其他AP鎖定,例如,如果打開Outlook,PST將更新,但我的AP可以無法訪問它,我們必須啓動Shadow Copy才能打開它。 所以我的問題是,如何知道文件完成複製?如何知道一個文件是完成複製
2
A
回答
1
這是一個非常冒險的本質的解決方案,但在非常多毛的情況下,您可以運行輪詢循環來檢查文件的大小(或修改日期)。如果它一段時間沒有變化,你可以有點安全地假定該文件已完成複製。
編輯:這不是平均情況下的最佳解決方案,但考慮到在OP的情況下,更好的解決方案被排除在問題約束之外。在考慮下調之前,先考慮這一點。
0
當您輪詢文件大小時,請勿使用_stat/_stat64
。相反,每次需要時打開該文件,並致電_filelengthi64
以獲取文件的大小。 Windows操作系統不會實時更新_stat64
返回的文件大小。另外,通過打開文件,您正在測試以查看任何長時間複製操作已完成。
0
Windows提供了一個API來監視目錄內容更新。 您可以使用Created事件檢測新文件,但請注意,此事件觸發並不一定意味着該文件尚未發佈。
本地C++規範和代碼例如:
http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx
.NET:
http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
相關問題
- 1. 如何知道java中是否正在進行文件複製/完成(1.6)
- 2. 如何知道在Windows中是否完成複製?
- 3. 如何知道文件是在製作還是在java中完成?
- 4. 如何知道ASIFormDataRequest是否完成?
- 5. 如何知道下載是否完成
- 6. 如何知道函數是否完成?
- 7. 如何知道WebBrowser是否完成下載文件? Visual Basic
- 8. audioPlayerDidFinishPlaying如何知道哪個文件已完成?
- 9. C#FileSystemWatcher,如何知道文件完全複製到監視文件夾中
- 10. 如何知道一致性緩存何時完成初始複製?
- 11. 如何知道UIWebView何時完成對上下文的繪製?
- 12. 檢查文件是否完成複製
- 13. AngularJs - 如何知道控制器是否完成初始化
- 14. 文件複製完成?
- 15. 複製完成的文件?
- 16. 如何測試一個文件是否以.NET完全複製
- 17. 如何知道MediaRecorder何時完成將數據寫入文件
- 18. 如何知道文件下載何時完成?
- 19. 如何知道何時完成一個輸入cin \ n? (循環)
- 20. 如何確定文件夾是否已完成複製c#
- 21. 如何知道FileSystemWatcher何時完成
- 22. 如何知道dllmain何時完成?
- 23. 如何知道Core Animation何時完成?
- 24. 如何知道何時下載完成
- 25. 如何知道ScheduledExecutorService何時完成
- 26. 如何知道何時下載完成?
- 27. 如何知道FileSystem.CopyDirectory何時完成?
- 28. 我如何知道location.reload()何時完成?
- 29. 如何知道dd何時完成
- 30. writeToFile如何知道它何時完成