关于.NET中FileSystemWatcher的一些不被人注意的细节

关于.NET中FileSystemWatcher的一些不被人注意的细节

.NET 中的FileSystemWatcher可以监控文件系统中的更改、新建、删除和重命名,关于它的事件及属性的讨论有许多,但细节性的具体在什么情况下触发这些事件讨论不多。根据个人测试,总结如下:
1、即使是文件是隐藏的,其变化(删除、更改或者重命名)也是能够被FileSystemWatcher所捕捉到的;
2、默认情况下,文件的属性变化,比如将正常文件改为只读、隐藏(或反过来将只读、隐藏文件改为正常),这些事件FileSystemWatcher不捕捉;如果要捕捉到属性变化,需要显式设置 fsw.NotifyFilter = NotifyFilters.Attributes;假设fsw是FileSystemWatcher实例化对象;
3、复制一个文件到被监控目录下,触发新建和修改事件;
4、在被监控目录内,成功剪切一个文件到被监控目录之外,触发删除事件;
5、在一个监控目录的子目录内(FileSystemWatcher监控子目录),如果文件内容修改,只触发该文件的修改事件;如果是新建文件、删除文件或者是重命名文件,则不仅文件的变动事件被触发,还会触发该子目录的修改事件,因为该子目录内的文件列表项有变动;