Элемент управления
FileSystemWatcher и отслеживание изменений файловой системы
Элемент управления FileSystemWatcher является экземпляром класса
FileSystemWatcher пространства имён System.IO. Он применяется для отслеживания
изменений в файловой системе. Свойство Path экземпляра класса FileSystemWatcher
задаёт каталог, в котором отслеживаются изменения в файловой системе. Свойство
NotifyFilter задаёт фильтр, отсеивающий типы наблюдаемых изменений. Свойства
Changed, Created, Deleted и Renamed специфицируют тип изменения. Оператор
AddHandler позволяет связать отслеживаемое изменение с соответствующим
обработчиком события.
В качестве примера сконструируем простой демонстрационный проект, в котором в
список выводятся изменения, происходящие в каталоге, указанном в поле ввода.
Режим отслеживания изменений активизируется по нажатию кнопки Start и
прекращается по нажатию кнопки Stop. Итак, создайте форму, в которой
расположите поле ввода, список и две кнопки. С помощью окна Properties
установите им значения свойств, как показано в таблице.
Поле ввода
Name
txtPath
Text
""
Список
lstWatcher
Кнопка
Name
btnStart
Text
Start
Кнопка
Name
btnStop
Text
Stop
Для завершения проекта остаётся только в код, сгенерированный мастером проекта,
добавить следующий код:
Public fsw As System.IO.FileSystemWatcher
Private Sub btnStart_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnStart.Click
fsw = New System.IO.FileSystemWatcher()
fsw.Path = txtPath.Text
fsw.NotifyFilter = IO.NotifyFilters.DirectoryName _
Or IO.NotifyFilters.FileName _
Or IO.NotifyFilters.Attributes
fsw.EnableRaisingEvents = True
btnStart.Enabled = False
btnStop.Enabled = True
End SubPrivate Sub changeWatcher(ByVal source As Object, _
ByVal e As System.IO.FileSystemEventArgs)
Select Case e.ChangeType
Case IO.WatcherChangeTypes.Changed
lstWatcher.Items.Add("File " & e.FullPath & " has been modified")
Case IO.WatcherChangeTypes.Created
lstWatcher.Items.Add("File " & e.FullPath & " has been created")
Case IO.WatcherChangeTypes.Deleted
lstWatcher.Items.Add("File " & e.FullPath & " has been deleted")
End Select
End SubPublic Sub renameWatcher(ByVal source As Object, _
ByVal e As System.IO.RenamedEventArgs)
lstWatcher.Items.Add("File " & e.FullPath & " has been renamed to " & e.Name)
End SubPrivate Sub btnStop_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnStop.Click
fsw.EnableRaisingEvents = False
btnStart.Enabled = True
btnStop.Enabled = FalseEnd Sub