2015-04-27 113 views
0

我想創建一個Windows服務,該服務檢測是否對文件中的任何文件進行了更改(創建,刪除或修改)系統。 當它檢測到更改時,我會檢查是否對相關文件進行更改。如果是這種情況,那麼我會將文件同步到服務器。 我知道我將如何同步這些文件,我只想知道如何創建一個事件,只要文件系統發生任何更改就會觸發。 該事件還應提供有關被修改的文件的路徑的信息,以及對該文件執行的操作。如何創建在文件系統中修改或創建或刪除任何文件後觸發的事件

+0

看看這個答案:http://stackoverflow.com/questions/931093/how-do-i-make -my-program-watch-for-file-modification-in-c它也描述了C#.Net方式 –

+0

[Directory Modification Monitoring]的可能重複(http://stackoverflow.com/questions/112276/directory-modification-監測)。 **注意:**這大多是這個問題的一個騙局。但是,請記住:FSW並不保證您會收到通知,並且如果在給定的文件系統上活動很高,則會漏掉一些。要監視的文件系統越多(例如「文件系統中的_any_文件」),FSW越有可能會錯過某些內容。 –

回答

1

您只需要初始化FileSystemWatcher並訂閱相關事件。

FileSystemWatcher watcher = new FileSystemWatcher(@"DirectoryPath"); 
watcher.Filter = "*.*";//Watch all the files 
watcher.EnableRaisingEvents = true; 

//Specifies changes to watch for in a file or folder. 
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size; 

//訂閱以下事件

watcher.Changed += new FileSystemEventHandler(watcher_Changed); 
watcher.Created += new FileSystemEventHandler(watcher_Created); 
watcher.Deleted += new FileSystemEventHandler(watcher_Deleted); 

//Raise when new file is created 
private void watcher_Created(object sender, FileSystemEventArgs e) 
{ 
    //Sync with server 
} 

//Raise when file is modified 
private void watcher_Changed(object sender, FileSystemEventArgs e) 
{ 
    //Sync with server 
}  

//Raise when a file is deleted 
private void watcher_Deleted(object sender, FileSystemEventArgs e) 
{ 
    //Sync with server 
} 
+0

感謝您的解決方案,稍作修改。 >>代替目錄路徑,我寫了「D:\」來搜索整個驅動​​器。 >> watcher.IncludeSubdirectories = true;以便wacher搜索子目錄。 –

+0

@VK很高興幫助你。 – Kurubaran

相關問題