【发布时间】:2017-03-16 20:08:26
【问题描述】:
我正在使用 C# 中的 FileSystemWatcher 构造。作为课程的标准,我让我的观察者只看感兴趣的目录。我遇到的问题是,无论用户事件(复制、创建、重命名)如何,我选择的唯一事件是 Changed 事件。
例如。
观看文件“C:...\Desktop\MattsRequest”
创建文件“C:...\Desktop\MattsRequest\Dummy.txt”
观察到只有 OnChanged 处理程序被“Changed”的 FileSystemEventArg 触发,路径 arg 是“C:...\Desktop\MattsRequest”没有提及创建了什么文件强>
我的观察者代码如下所示。
watcher = new FileSystemWatcher();
//watcher.IncludeSubdirectories = true;
watcher.InternalBufferSize = 32768 * 2;
//Can't use a synchro because I can't find an example of something that
//implements ISynchroniz-whatever
//watcher.SynchronizingObject =
watcher.Path = filePath;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName
| NotifyFilters.CreationTime;
watcher.Changed += OnChanged; //Gets triggered
watcher.Created += OnCreated; //Never triggered
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed; //Never triggered
watcher.Error += WatcherOnError; //Never triggered
// Begin watching.
watcher.EnableRaisingEvents = true;
下面是我在监视目录中创建新文件时的图像,以及它触发的事件。它当然是 Changed 类型,但它不会告诉我创建了哪个文件。
非常感谢任何帮助。
【问题讨论】:
-
您很可能会观看顶级目录。例如,您观看“Desktop\MattsRequest”,但在子目录“Desktop\MattsRequest\MattsRequest\Dummy.txt”中创建文件。
-
如果你也想跟踪子目录的变化 - 设置
watcher.IncludeSubdirectories = true; -
@Evk 你好,Evk。你是完全正确的问题是什么。您介意回复您的评论,以便我给它一个绿色检查吗?
标签: c# .net filesystemwatcher