0
A
回答
0
FileSystemWatcher
有several events,您可以使用它來偵聽文件系統上不同類型的事件。還有一個NotifyFilter
屬性,您可以使用它來指定應該監視哪些事件類型。
所以你不需要使用三個不同的觀察者;一個就足夠了。您只需要某種形式的計數器來跟蹤文件所做的更改。這裏有一個簡單的例子:
Dictionary<string, int> changeCounter = new Dictionary<string, int>();
...
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\Path\To\Some\Folder";
watcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite;
watcher.Created += OnCreated;
watcher.Changed += OnChanged;
...
private void OnCreated(object source, FileSystemEventArgs e)
{
changeCounter.Add(e.FullPath, 0);
}
private void OnChanged(object source, FileSystemEventArgs e)
{
if (changeCounter.ContainsKey(e.FullPath))
{
changeCounter[e.FullPath]++;
if (changeCounter[e.FullPath] == 2)
{
CopyFile(e.FullPath);
}
}
}
這隻會叫CopyFile
後觀察者檢測到的文件創建事件和單個文件中的兩個文件變更事件。如果您擔心一旦創建,編輯,刪除,重新創建和編輯文件,您可能還想要修改句柄刪除操作—這會觸發CopyFile
,即使在技術上該文件僅在編輯後才被編輯過一次創建。
相關問題
- 1. 需要一個批處理文件來複制新文件和更改文件
- 2. MSI(Wix)創建目錄,更改權限和複製文件
- 3. 需要創建和讀取和修改NSIS的XML文件
- 4. 創建wordpress插件 - 全局和包含文件需要它
- 5. 複製文件,根據需要在Ruby中創建目錄
- 6. 需要更改Context.Xml文件
- 7. 在Android Studio中更改xml佈局文件後需要重建
- 8. GCM配置文件和帳戶需要創建它
- 9. 複製$ SCE創建對象,然後修改它的值
- 10. ASP經典創建一個文件夾,然後更改它
- 11. 我需要創建一個批處理文件,它將複製多個服務器上的文件
- 12. 複製文件和文件夾中的文件更改
- 13. 創建和更改已創建的php文件的一部分
- 14. google-services.json - 更改的package_name - 我需要創建一個新的配置文件
- 15. 更改後是否需要重新定製自定義組件?
- 16. cmake和make不會創建文件夾並將文件複製到它
- 17. 需要的方向 - 如何創建可定製的文件?
- 18. AS400源文件中的DDMF更改,我是否需要重新創建DDMF?
- 19. 需要在android中創建文件來讀取它
- 20. 創建文件然後複製它的Bash腳本 - 副本有時爲空
- 21. 儘管在表創建/更改表後創建恢復點
- 22. 做的控制檯exe文件由matlab創建需要MCR
- 23. 爲什麼需要UAC更改文件?
- 24. 需要更改schema.xml和solrconfig.xml
- 25. 創建connect.php有需要在.htx文件
- 26. Emacs - 直接複製/移動文件 - 創建目錄,如果需要
- 27. 需要使用VBA更改複製的Excel公式的名稱
- 28. 耙 - 僅複製更改的文件
- 29. 創建一個批處理解析文本文件,找到一個文件夾並複製它和它的樹
- 30. 更改php.ini文件後是否需要重新啓動Apache?
一個FileSystemWacher就足夠了。但除了爲你寫信之外,我們該如何回答? –