我正在使用FileSystemWatcher
监视文件夹,这似乎阻止了文件夹的父级被删除,但是并不能阻止文件夹本身被删除。
例如,我具有文件结构:
C:\Root\FolderToWatch\...
使用
FileSystemWatcher
定位FolderToWatch
。程序运行时,如果我进入Windows资源管理器并尝试删除Root
,则会收到错误消息“无法删除根目录:访问被拒绝”。但是,如果先删除
FolderToWatch
,则可以删除Root
而不会发生任何情况。如果您想使用它,这里是一些代码:
static void Main(string[] args) {
var watcher = new FileSystemWatcher(@"C:\Root\FolderToWatch");
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Changed += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Created += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Deleted += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Renamed += (sender, e) => Console.WriteLine(e.FullPath);
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press \'q\' to quit.");
while (Console.Read() != 'q');
}
为什么
FileSystemWatcher
这样挂在目标的父对象上,而不是目标本身呢?
最佳答案
这是因为通过删除根文件夹,您还将隐式删除其包含的所有文件夹,在示例“ FolderToWatch”中,它是FileSystemWatcher进程所拥有的。
请享用!
关于.net - FileSystemWatcher保留父目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961429/