.net - FileSystemWatcher保留父目录

标签 .net filesystemwatcher

我正在使用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/

相关文章:

.net - 更新 Entity Framework 中的数据库架构

c# - 如何 : Monitoring file access by another process in Windows?

c# - 如何在没有 Visual Studio 的情况下构建可移植类库?

c# - 如何在不转换时间的情况下更改 ZonedDateTime 的时区

c# - 从 VS2010 运行时,应用程序只是关闭(没有错误或错误)

c# - 子目录中的 FileSystemWatcher 文件

c# - 如何检测文件何时放入我的文件夹之一

c# - FileSystemWatcher 丢失文件

.net - Crypto API 中交换 key 和签名 key 的区别

c# - Couchbase 4.5 返回部分文档