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