2014-07-05 57 views
1

我使用FileSystemWatcher來監視幾個文件夾。 當它觸發更改事件時,我想獲取更改文件的文件名。 由於觀察者正在監視文件夾,當我嘗試使用e.Name或e.FullPath時,我得到文件夾路徑。Filesystemwatcher在一個文件夾並獲取文件名

有沒有辦法獲得文件名?

代碼: 它是一個觀察者陣列。

watchers[_Idx] = new FileSystemWatcher(); 
watchers[_Idx].Path = row.Cells[0].Value.ToString(); 
watchers[_Idx].IncludeSubdirectories = true; 
watchers[_Idx].NotifyFilter = NotifyFilters.LastWrite | 
          NotifyFilters.DirectoryName | NotifyFilters.FileName | 
          NotifyFilters.Size; 
watchers[_Idx].Changed += new FileSystemEventHandler(SyncThread); 
watchers[_Idx].Created += new FileSystemEventHandler(SyncThread); 
watchers[_Idx].Renamed +=new RenamedEventHandler(SyncThread); 
watchers[_Idx].EnableRaisingEvents = true; 
+0

請顯示初始化FileSystemWatcher及其屬性的代碼 – Steve

+1

如果您不想知道目錄更改,請刪除NotifyFilters.DirectoryName –

回答

1

您可以從事件中提取的文件名:

// Define the event handlers. 
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); 
} 

代碼段從here拍攝。

+1

我之前曾嘗試過,但仍保留獲取文件夾名稱的權限。它首先給出了所有涉及的文件夾和子文件夾的事件,然後移動到文件中。謝謝 – AshChlor

相關問題