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' 이벤트 몰랐다, 감사합니다. –
당신은 환영합니다 :) – Tim