我已经设法使用 FileSystemWatcher 查看文件和文件夹更改。
我的问题是我无法区分文件和文件夹。文件和文件夹可能具有相同的路径名。
对于删除事件,我什至不能使用脏工作区来测试 File.Exists(path) 或 Directory.Exists(path),因为调用该方法时文件/文件夹已被删除。
也许这个对象有我需要的信息,但我没有找到它:
FileSystemEventArgs e
我只想知道更改的项目是文件还是文件夹。
最佳答案
假设它在 NTFS 卷上,我认为您可以通过查看 Change Journals 来完成您需要的操作。 .特别是 FSCTL_READ_USN_JOURNAL控制代码并查看 FileAttributes的 USN_RECORD查看它是否是 FILE_ATTRIBUTE_DIRECTORY
。
您可以在此处找到示例(在 C++ 中,但可能会转换为 C#,或者可能只是编写一个小的 C++ dll 以从您的应用程序调用):Walking a Buffer of Change Journal Records
关于C# 文件/文件夹监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235008/