C# 文件/文件夹监视器

标签 c# monitor filesystemwatcher

我已经设法使用 FileSystemWatcher 查看文件和文件夹更改。

我的问题是我无法区分文件和文件夹。文件和文件夹可能具有相同的路径名。

对于删除事件,我什至不能使用脏工作区来测试 File.Exists(path) 或 Directory.Exists(path),因为调用该方法时文件/文件夹已被删除。

也许这个对象有我需要的信息,但我没有找到它:

FileSystemEventArgs e

我只想知道更改的项目是文件还是文件夹。

最佳答案

假设它在 NTFS 卷上,我认为您可以通过查看 Change Journals 来完成您需要的操作。 .特别是 FSCTL_READ_USN_JOURNAL控制代码并查看 FileAttributesUSN_RECORD查看它是否是 FILE_ATTRIBUTE_DIRECTORY

您可以在此处找到示例(在 C++ 中,但可能会转换为 C#,或者可能只是编写一个小的 C++ dll 以从您的应用程序调用):Walking a Buffer of Change Journal Records

关于C# 文件/文件夹监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235008/

相关文章:

c# - 为什么我的 WPF 项目中的数据上下文可以在代码隐藏中正常运行,但不能在 xaml 中正常运行?

android - Realm 浏览器/Android 设备监视器?

api - Datadog monitor API/terraform process monitor 检查

c# - 使用 Monitor.Wait 和 Monitor.Pulse 时出现内存不足异常

电源外壳。无法从 {} 获取变量

c# - 在 AspNetCore OpenIdConnect 上设置 redirect_uri

c# - 从结构数组填充组合框

objective-c - 监视特定文件夹的更改并检测 Cocoa 中哪些文件发生了更改

c# - ASP.Net Core 401 中的 SignalR 未经授权

c# - FileSystemWatcher - 事件没有触发第二次