演练:响应文件系统事件

更新:2007 年 11 月

本页中的过程演示如何创建 FileSystemWatcher 组件,将其指向本地计算机上的某个目录,然后使用 Filter 属性仅监视对文本文件的更改。您将创建一个引发 Created 事件和 Changed 事件时响应的事件处理程序,并使用窗体显示这些事件产生的通知。

在下面的过程中,您将创建 Windows 窗体和 FileSystemWatcher 组件实例,这二者将协同工作以对目录级事件作出响应。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

创建应用程序

创建应用程序所需的窗体和组件

  1. 在“新建项目”对话框中,创建一个 Visual Basic 或 Visual C# 的“Windows 应用程序”,并将其命名为 MyWatcher。

  2. 从“工具箱”的“Windows 窗体”选项卡上,将两个 Label 控件拖到设计器图面。

  3. 单击“工具箱”上的“组件”选项卡,然后将 FileSystemWatcher 拖到组件的设计器图面。默认情况下,此组件命名为 FileSystemWatcher1。

监视目录

在下面的过程中,设置组件的几个属性以确定它将监视的内容。这些设置将使该组件监视本地计算机上的指定目录,以及监视创建以 .txt 文件扩展名结尾的文件的情况。

设置 FileSystemWatcher 组件的属性

  1. 单击在前一过程中创建的 FileSystemWatcher 组件,然后在“属性”窗口中查看其属性。

  2. 将该组件的名称设置为 myWatcher。

  3. 使用 Path 属性将 FileSystemWatcher 组件设置为监视本地计算机上的某个目录。例如,在运行 Microsoft Windows 2000 的计算机上,可以将下列内容输入到 Path 属性中,以便将该组件设置为监视“我的文档”目录:

    C:\Documents and Settings\yourusername\My Documents\
    
    提示:

    对于此示例,您可以使用本地计算机上所需的任何目录。

  4. Filter 属性设置为 *.txt,以使该组件仅监视以 .txt 文件扩展名结尾的那些文件。

处理发生的事件

在下列过程中,将为组件定义两个事件处理程序,它们定义每当引发 ChangedCreated 事件时应发生的处理过程。

配置组件

  1. 双击 FileSystemWatcher 组件。这将出现代码编辑器,并显示 Changed 事件的默认事件处理程序。

    说明:

    有关更多信息,请参见 在 Windows 窗体中创建事件处理程序

  2. 使用以下代码显示一个简单的文本字符串,它将验证事件已被引发:

    Private Sub myWatcher_Changed(ByVal sender As System.Object, _
       ByVal e As System.IO.FileSystemEventArgs) Handles myWatcher.Changed
       Me.Label1.Text = "Changes made to: " & e.FullPath
    End Sub
    
    private void myWatcher_Changed(object sender, 
       System.IO.FileSystemEventArgs e)
    {
       label1.Text = "Changes made to: " + e.FullPath;
    }
    
  3. 创建 Created 事件的事件处理程序,该事件处理程序指定每当组件引发此事件时应用程序应该执行的操作。有关创建事件处理程序的信息,请参见如何:使用设计器创建事件处理程序。添加所示代码,显示新建文件的完整路径。完成后,代码应如以下示例所示。

    Private Sub myWatcher_Created(ByVal sender As System.Object, _
       ByVal e As System.IO.FileSystemEventArgs) Handles myWatcher.Created
       Me.Label2.Text = "The file: " & e.FullPath & _
          " has been added to your directory"
    End Sub
    
    private void myWatcher_Created(object sender,
       System.IO.FileSystemEventArgs e)
    {
       label2.Text = "The file: " + e.FullPath + 
          " has been added to your directory.";
    }
    
  4. 保存所有文件,然后生成并运行应用程序。

测试组件

在下列过程中,您将手动在组件所监视的目录中进行更改,以便可强制事件处理程序引发 ChangedCreated 事件。

测试 FileSystemWatcher 组件

  1. 运行在前一过程中创建的应用程序。

  2. 使用“Windows 资源管理器”找到已为 FileSystemWatcher 组件设置的监视目录。

  3. 启动“记事本”,然后创建新文本文件。将此文件保存到在步骤 2 中找到的目录,并关闭该文件。

    说明:

    这应引发 CreatedChanged 事件,并运行定义的处理程序。

  4. 返回到窗体。应在标签中看到创建的消息。

  5. 打开所创建的文本文件,键入几行文本,然后再次保存它。

    说明:

    这应引发 Changed 事件,并运行定义的处理程序。

  6. 返回到窗体。应在标签中看到更改消息。

请参见

任务

如何:创建 FileSystemWatcher 组件实例

概念

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

其他资源

Label 控件(Windows 窗体)