0
我正在使用FileSystemWatcher
來跟蹤目錄中的更改。問題是我必須跟蹤並修改任何最近在我監視的子目錄中創建的子目錄。截至目前,我只是使用Change
事件檢測到一些更改,檢查FullPath
是否是一個目錄,併爲該子目錄創建了一個新的FileSystemWatcher
實例。無法從FileSystemEventArgs.FullPath訪問目錄,錯誤的目錄名稱
private static void StartMonitoringDir(string dir)
{
var fileWatcher = new FileSystemWatcher(dir)
{
EnableRaisingEvents = true,
Filter = "*.exe"
};
var folderWatcher = new FileSystemWatcher(dir)
{
EnableRaisingEvents = true
};
fileWatcher.Created += FileWatcherOnCreated;
fileWatcher.Changed += FileWatcherOnChanged;
folderWatcher.Created += FolderWatcherOnCreated;
}
private static void FolderWatcherOnCreated(object sender, FileSystemEventArgs e)
{
var attr = File.GetAttributes(e.FullPath);
if (attr != FileAttributes.Directory) return;
StartMonitoringDir(e.FullPath);
}
所以,這是問題所在。只要我創建一個目錄,Changed
事件就會以"New Folder"
名稱引發,因此當用戶重命名此文件夾並在其中進行修改時,我會得到文件夾的舊名稱"New Folder"
,而不是用戶指定的名稱。我無法知道文件夾的新名稱是什麼,也無法進行修改,因爲我的目錄名稱不正確。
卻沒有意識到'Renamed'事件的,謝謝。 – 2013-04-28 03:22:05
不客氣:) – Tim 2013-04-28 03:22:23