关于监视文件系统事件的介绍

更新:2007 年 11 月

使用 FileSystemWatcher 组件可以监视文件系统,并在文件系统所包含的目录和文件发生更改时作出响应。这使您可以在特定的文件和目录被创建、修改或删除时,快速方便地启动业务处理。例如,假设您和一群同事正合作处理某个文档,而该文档存储在服务器上的共享目录下。使用 FileSystemWatcher 组件的实例,您可以编写自己的应用程序来监视共享目录内容的更改。当检测到更改时,该组件就可以运行过程,通过电子邮件通知小组的每一个成员。

说明:

FileSystemWatcher 组件用于监视目录中的更改,而不是监视对根目录属性本身的更改。例如,如果正在监视名为 c:\MyProjects 的目录,则该组件将监视该目录内的更改,但不监视对根目录本身的更改。

可以配置该组件以监视整个目录及其内容,或者监视给定目录中的某个特定文件或一组文件。每当创建、删除、重命名或以其他方式更改指定根目录中的文件或子目录时,FileSystemWatcher 组件都会引发事件。该组件监视的更改类型包括对文件或子目录的属性、大小、上次写入时间、上次访问时间和安全设置的更改。

安全说明:

如果一个恶意的程序获得了对 FileSystemWatcher 组件正在监视的目录的访问权限,并进行大量更改,使此组件无法管理这些更改,则可能导致拒绝服务攻击。请采纳关于大容量系统中文件更改的注意事项中的建议,并正确地使用访问控制列表,以降低受到拒绝服务攻击的风险。

目录级事件

当应用程序正在监视的根目录或文件中发生更改时,将引发一个或多个事件,将它们存储在缓冲区中并最终传递给组件进行处理。使用 FileSystemWatcher 组件可以访问下列事件:

  • Created - 创建目录或文件时引发。

  • Deleted - 删除目录或文件时引发。

  • Renamed - 更改目录或文件的名称时引发。

  • Changed - 当更改目录或文件的大小、系统属性、上次写入时间、上次访问时间或安全权限时引发。

    说明:

    某些经常发生的事(如复制或移动文件)虽然并不直接与事件相对应,但确实会引发事件。在复制文件时,系统在复制文件的目标目录中引发 Created 事件,但在源目录中不引发任何事件。在移动文件时,服务器引发两个事件:先在源目录中引发 Deleted 事件,然后在目标目录中引发 Created 事件。

对目录中的文件所做的每一个更改都会引发一个单独的事件。如果用户对一个文件做了多个更改,则对每一个更改,应用程序都会引发一个单独的事件。例如,如果您正在监视一个包含五个文件的目录,当所有这些文件的安全权限突然发生更改时,您将会收到五个 Changed 事件。如果用户对这五个文件中的每一个文件都重命名并分配新的安全权限,您将会收到 10 个事件通知,因为每个文件都对应一个 Changed 事件和一个 Renamed 事件。

请参见

任务

如何:创建 FileSystemWatcher 组件实例

如何:配置 FileSystemWatcher 组件实例

如何:创建文件系统事件的处理程序

如何:等到指定的文件系统事件发生

概念

关于大容量系统中文件更改的注意事项