Монитор файловой системы
К числу принципиальных новшеств, отличающих VB.NET от предыдущих версий VB, относится и возможность сделать на сервере то, что в VB давно делалось для клиентов. Речь идет об инкапсуляции общей функциональности в элементах и многократном использовании кода. В завершение этой главы мы покажем, как использовать класс FileSystemMonitor для написания программы, которая отслеживает изменения в заданном каталоге и сигнализирует о них при помощи событий.
Программа может следить за каталогом или набором файлов, соответствующих заданному фильтру. Элемент FileSystemMonitor даже может произвести рекурсивный перебор всех подкаталогов заданного каталога. Инициируемые события перечислены в табл. 9.13.
Таблица 9.13. События монитора файловой системы.
Событие | Описание |
---|---|
Changed | Изменения в размере, системных атрибутах, времени последней записи, времени последнего обращения или привилегиях безопасности для подкаталога или файла |
Created | Создание подкаталога или файла |
Deleted | Удаление подкаталога или файла |
Renamed | Переименование подкаталога или файла |
Впрочем, компонент FileSystemMonitor не всесилен – в частности, он не позволяет отслеживать изменения в самом каталоге. Если кто-то переименует файл, находящийся в каталоге, вы об этом узнаете, однако переименование самого каталога останется незамеченным (конечно, для отслеживания подобных изменений можно дополнительно следить за родительским каталогом).
Компонент FileSystemMonitor, как и все компоненты разных панелей элементов VS.NET, является конкретной реализацией более общего класса. В данном случае это класс FileSystemWatcher, производный от класса Component. Режим отслеживания подкаталогов включается следующей командой:
FileSystemWatcherl.IncludeSubdirectohes = True
На рис. 9.6 изображен примерный вид формы. Компонент FileSystemWatcher находится на вкладке Components. Визуального интерфейса он не имеет и поэтому при размещении на форме он отображается на служебной панели, показанной в нижней части рис. 9.6.
Рис. 9.6. Пример использования компонента FileSystemWatcher