Пошаговое руководство. Отклик на события файловой системы

Обновлен: Ноябрь 2007

В приведенных здесь процедурах выполняется создание компонента FileSystemWatcher и его связывание с каталогом на локальном компьютере, после чего свойство Filter используется для отслеживания изменений, относящихся только к текстовым файлам. Будет создан обработчик событий, реагирующий на события Created и Changed, а для отображения уведомлений об этих событиях будет использована форма.

В приведенной далее процедуре создается форма Windows Forms и экземпляр компонента FileSystemWatcher, которые будут совместно обрабатывать события уровня каталога.

28y7bbdc.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание приложения

Чтобы создать необходимые для приложения форму и компоненты, выполните следующие действия:

  1. В диалоговом окне Создать проект создайте приложение Windows на языке Visual Basic или Visual C#, назвав его MyWatcher.

  2. Перетащите два элемента управления Label с вкладки Windows Formsпанели элементов в область конструктора.

  3. Откройте вкладку Компонентыпанели элементов и перетащите в область конструктора компонент FileSystemWatcher. По умолчанию этот компонент называется FileSystemWatcher1.

Слежение за каталогом

В приведенной ниже процедуре производится установка нескольких свойств компонента для определения того, что он будет отслеживать. При задании этих параметров компонент будет отслеживать указанный каталог локального компьютера и создание файлов с расширением TXT.

Установка свойств компонента FileSystemWatcher

  1. Выберите созданный ранее компонент FileSystemWatcher и откройте его свойства в окне Свойства.

  2. Переименуйте компонент в myWatcher.

  3. Измените значение свойства Path так, чтобы настроить компонент FileSystemWatcher на отслеживание каталога на локальном компьютере. Например, для наблюдения за каталогом My Documents на компьютере под управлением Microsoft Windows 2000 можно указать следующее значение свойства Path:

    C:\Documents and Settings\yourusername\My Documents\
    
    28y7bbdc.alert_note(ru-ru,VS.90).gifСовет.

    В данном примере можно использовать произвольный каталог на локальном компьютере.

  4. Для того, чтобы ограничить слежение файлами с расширением TXT, присвойте свойству Filter значение *.txt.

Обработка возникающих событий

В приведенной ниже процедуре определяются два обработчика событий компонента, которые будут отвечать за необходимую обработку возникающих событий Changed и Created.

Настройка компонента

  1. Дважды щелкните на компоненте FileSystemWatcher. Откроется окно редактора кода, в котором появится используемый по умолчанию обработчик события Changed.

    28y7bbdc.alert_note(ru-ru,VS.90).gifПримечание.

    Дополнительные сведения см. в разделе Создание обработчиков событий в Windows Forms.

  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. Сохраните все файлы, после чего постройте и запустите приложение.

Тестирование компонента

В следующей процедуре в каталоге, отслеживаемом с помощью компонента, будут вручную произведены определенные изменения; это заставит обработчик событий создать события Changed и Created.

Тестирование компонента FileSystemWatcher

  1. Запустите созданное ранее приложение.

  2. Воспользуйтесь проводником Windows для поиска каталога, который был выбран для отслеживания с помощью компонента FileSystemWatcher.

  3. Откройте текстовый редактор Блокнот и создайте новый текстовый файл. Сохраните этот файл в каталоге, найденном на предыдущем шаге, и закройте файл.

    28y7bbdc.alert_note(ru-ru,VS.90).gifПримечание.

    Это должно привести к возникновению событий Created и Changed, а также к выполнению созданного обработчика.

  4. Вернитесь к форме. В тексте метки должно появиться сообщение о создании файла.

  5. Откройте созданный текстовый файл, введите несколько строк текста и сохраните его повторно.

    28y7bbdc.alert_note(ru-ru,VS.90).gifПримечание.

    Это должно привести к созданию события Changed и выполнению созданного обработчика.

  6. Вернитесь к форме. В тексте метки должно появиться сообщение об изменениях в каталоге.

См. также

Задачи

Практическое руководство. Создание экземпляров компонента FileSystemWatcher

Основные понятия

Знакомство с наблюдением за событиями файловой системы

Другие ресурсы

Элемент управления Label (Windows Forms)