2012-01-25 52 views
0

初學編程的在這裏....希望這是有道理的:)FileSystemWatcher的 - 同步更改的文件

我創建了一個控制檯應用程序,我需要在後臺運行,並觀看目錄的更改/重命名事件。我已經使用了FileWatcher類,並增加了事件處理程序像這樣:

watcher.Changed += new FileSystemEventHandler(OnChanged); 
    watcher.Created += new FileSystemEventHandler(OnChanged); 
    watcher.Deleted += new FileSystemEventHandler(OnChanged); 
    watcher.Renamed += new RenamedEventHandler(OnRenamed); 

和定義的處理程序然後在下面像這樣:

private static void OnChanged(object source, FileSystemEventArgs e) 
{ 
    //specify what is done when a file is changed, created or deleted 
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
} 
private static void OnRenamed(object source, RenamedEventArgs e) 
{ 
    //specify what is done when a file is renamed 
    Console.WriteLine("File {0} renamed to {1}", e.OldFullPath, e.FullPath); 

我希望能夠在一些代碼添加將任何已更改/重命名的文件轉儲到另一個本地目錄,但我不知道從哪裏開始。在一分鐘的控制檯回寫FULLPATH給我,但我非常希望它複製到另一個文件夾

謝謝你們

回答

1

您可以使用string destination = Path.Combine(localDirectory, e.Name);創建目標路徑和File.Copy(e.FullPath, destination);實際拷貝文件。

請注意,當您收到Changed事件時,進程仍可能正在寫入文件,因此您可能會收到異常或複製半處理數據。如果該文件已經存在於本地目錄中,您應該考慮該怎麼做(請注意File.Copy(string, string, bool overwrite)過載)。

此外,請確保您檢查更改的項目是否是文件而不是目錄(例如,通過使用File.Exists(e.FullPath)

相關問題