除了读取所有文件并将它们与以前的快照进行比较之外,有没有办法在 Windows 中的 C# 中检测目录何时发生更改?如果需要的话,我不介意 PInvoke。
EDITFileSystemWatcher 类很棒,但有一个问题是您必须启动后台任务/线程的回调通知中的所有工作,以避免阻塞,从而导致事件丢失。
Use the 文件系统观察者 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx类 - 它做你想做的事。它不会告诉您文件中的哪些字节发生了更改,但它会告诉您哪些文件发生了更改。
来自文档:
使用 FileSystemWatcher 来监视
指定目录中的更改。你
可以监视文件的变化并
指定的子目录
目录。您可以创建一个组件
要观看本地计算机上的文件,
网络驱动器或远程计算机。
要监视所有文件中的更改,请设置
Filter 属性设置为空字符串
("") 或使用通配符 (".“)。 到
观看特定文件,设置过滤器
属性到文件名。为了
例如,观察
文件MyDoc.txt,设置过滤器
属性为“MyDoc.txt”。你也可以
观察某种类型的变化
文件。例如,要观看
文本文件发生变化,设置Filter
属性为“*.txt”。
您可以进行几种类型的更改
可以在目录或文件中监视。
例如,您可以观察变化
在属性中,LastWrite 日期和
时间,或文件大小或
目录。这是通过设置完成的
NotifyFilter 属性为其中之一
NotifyFilters 值。了解更多
有关您所做更改类型的信息
可以观看,参见NotifyFilters。
您可以监视重命名、删除、
或创建文件或目录。
例如,要监视重命名
文本文件,将 Filter 属性设置为
“*.txt”并调用 WaitForChanged
指定了 Renamed 的方法
它的参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)