gpt4 book ai didi

c# - 子目录中的 FileSystemWatcher 文件

转载 作者:太空狗 更新时间:2023-10-29 21:34:28 24 4
gpt4 key购买 nike

如果文件被创建、复制或移动到我正在查看的目录中,我正试图收到通知。不过,我只想收到有关文件的通知,而不是目录。

这是我目前拥有的一些代码:

_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;

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

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

万一我解释得不够好...我有 WatchedDirectoryDirectory1Directory1 包含 Hello.txt。如果我将 Directory1 移动到 WatchedDirectory,我希望收到有关 Hello.txt 的通知。

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

最佳答案

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

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);
}
}
}

关于c# - 子目录中的 FileSystemWatcher 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com