FileSystemWatcher保留父目录

时间:2010-06-02 20:39:37

标签: .net filesystemwatcher

我使用FileSystemWatcher监控文件夹,似乎阻止了文件夹的被删除,但不会阻止文件夹本身从被删除。

例如,我有文件结构:

C:\Root\FolderToWatch\...

FileSystemWatcher定位FolderToWatch。当我的程序运行时,如果我转到Windows资源管理器并尝试删除Root,我会收到错误“无法删除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会像那样挂在它的目标父母身上,而不是目标本身?

1 个答案:

答案 0 :(得分:1)

这是因为通过删除根文件夹,您也将隐式删除它包含的任何文件夹,例如“FileToWatch”中的namley将由FileSystemWatcher进程拥有。

享受!