IO.FileSystemWatcher和已删除的文件夹

时间:2016-12-01 07:24:29

标签: .net filesystemwatcher

对于我的项目我需要在硬盘上观看文件夹并对任何文件或文件夹做出反应,这些文件或文件夹可能会在此文件夹或其任何子文件夹中创建,更改,重命名或删除。 为此,我创建了一个FileSystemWatcher,如下所示:

    Dim watcher As IO.FileSystemWatcher

    watcher = New IO.FileSystemWatcher(<path to folder to watch>)
    watcher.NotifyFilter = IO.NotifyFilters.FileName Or
                           IO.NotifyFilters.LastWrite Or
                           IO.NotifyFilters.DirectoryName Or
                           IO.NotifyFilters.Size
    watcher.IncludeSubdirectories = True

    AddHandler watcher.Created, AddressOf OnCreated
    AddHandler watcher.Changed, AddressOf OnChanged
    AddHandler watcher.Deleted, AddressOf OnDeleted
    AddHandler watcher.Renamed, AddressOf OnRenamed
    AddHandler watcher.Error, AddressOf Start.OnError

    watcher.EnableRaisingEvents = True

除了为单个文件更改获取多个更改事件(我知道为什么我会获得多个事件以及如何解决此问题),我有一个主要问题。

如果我在监视文件夹中的任何位置删除文件,我会收到此文件的Deleted事件,我可以对此做出反应。

但是如果我删除了我的监视文件夹中的非空子文件夹,我只会获得子文件夹的Deleted事件,而不是该子文件夹中的文件。并且因为子文件夹和里面的文件已被删除,我自己无法查看硬盘上找出要删除的文件来处理它们。

您是否有任何想法如何通知子文件夹中已删除的文件?

感谢您的帮助。

编辑:

我做了一些测试。当我将监视文件夹中的子文件夹从一个位置移动到另一个文件夹时,我只获得该文件夹的DeletedCreated,而不是包含的文件。但在这种情况下,我至少可以直接在硬盘上查找已移动的文件。删除子文件夹时无法做到这一点。

0 个答案:

没有答案