FileSystemWatcher文件位于子目录中

Jos*_*osh 7 c# filesystemwatcher

如果文件被创建,复制或移动到我正在观看的目录中,我正在尝试收到通知.我只希望收到有关文件的通知,而不是目录.

这是我目前的一些代码:

_watcher.NotifyFilter = NotifyFilters.FileName;
_watcher.Created += new FileSystemEventHandler(file_created);
_watcher.Changed += new FileSystemEventHandler(file_created);
_watcher.Renamed += new RenamedEventHandler(file_created);
_watcher.IncludeSubdirectories = true;
_watcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

问题是,如果我移动一个包含文件的目录,我就不会收到该文件的任何事件.

如何通知我所有添加的文件(无论如何)到监视目录或它的子目录?

Incase我没有解释得足够好......我有WatchedDirectoryDirectory1.Directory1包含Hello.txt.如果我将Directory1移动到WatchedDirectory,我希望收到Hello.txt的通知.

编辑:我应该注意我的操作系统是Windows 8.而且我确实收到了复制/粘贴事件的通知,但没有移动事件(拖放到文件夹中).

Ale*_*ici 5

也许这个解决方法会派上用场(但我会小心性能,因为它涉及递归):

private static void file_created(object sender, FileSystemEventArgs e)
{
    if (e.ChangeType == WatcherChangeTypes.Created)
    {
        if (Directory.Exists(e.FullPath))
        {
            foreach (string file in Directory.GetFiles(e.FullPath))
            {
                var eventArgs = new FileSystemEventArgs(
                    WatcherChangeTypes.Created,
                    Path.GetDirectoryName(file),
                    Path.GetFileName(file));
                file_created(sender, eventArgs);
            }
        }
        else
        {
            Console.WriteLine("{0} created.",e.FullPath);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)