我想檢測特定文件夾(數據更改除外)上的每個文件更改。我決定使用System.IO.FileSystemWatcher來管理它。C#檢測文件移動通過不同的文件夾
//
// fileSysWatchFile
//
this.fileSysWatchFile.EnableRaisingEvents = true;
this.fileSysWatchFile.IncludeSubdirectories = true;
this.fileSysWatchFile.NotifyFilter = System.IO.NotifyFilters.FileName;
this.fileSysWatchFile.SynchronizingObject = this;
this.fileSysWatchFile.Created += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Created);
this.fileSysWatchFile.Deleted += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Deleted);
this.fileSysWatchFile.Renamed += new System.IO.RenamedEventHandler(this.fileSysWatchFile_Renamed);
只要好...檢測到新文件。文件刪除被檢測到。文件重命名被檢測到。
當我將文件移動到子文件夾時,它首先檢測到文件刪除,然後創建新文件。
我希望移動和重命名一樣,除了路徑。似乎不是。我能否以保存方式檢測文件移動?
順便說一下...我只想檢測文件更改而不是目錄更改。
編輯:
附加信息爲什麼我要檢測動作並不能刪除生活,創建:
我要重播的其他驅動器上進行相同的更改。如果我首先得到刪除,我刪除影子文件。然後我得到的創建文件事件和原來的文件已經失去了:-(。
所以我有一個驅動器A這是看着驅動... 並且具有與相同的文件名文件的驅動器B中。
exept數據變化的所有文件的變化,應該在驅動器B.重播
主要問題是,我不能說刪除和創建事件之間的時間有多長,因爲我不能通過延遲路徑檢查來檢測它,所以無法實現保存解決方法。 – fpdragon 2010-11-27 09:30:28
任何超過幾秒對於一個文件移動來說是一個非常令人驚訝的值,因爲windows真的只是更新了文件路徑,即使它說它是一個delete + create – SWeko 2010-11-27 10:45:34
AFAIK FileSystemWatcher是一個盡力而爲的方法,只有有限的通知緩衝區,通知將會默默地下降。所以當系統忙時,你的應用程序可能會錯過一些事件。 – Daniel 2010-11-27 11:43:51