Мониторинг изменений в файловой системе
Если вам необходимо следить за изменениями файлов в одном или нескольких каталогах (например, содержащих файлы журнала и дампы памяти), вы можете использовать экземпляр типа МониторФайловойСистемы. Функция мониторинга поддерживается для всех операционных систем (Windows, Linux и macOS).
Чтобы начать работу с монитором, вызовите метод Отслеживать() типа МониторФайловойСистемы и укажите каталог для отслеживания, как описано ниже. Для завершения работы монитора вызовите метод Закрыть().
Задать каталог для отслеживания изменений
пер Каталог = новый Файл("C:\\TargetDirectory")
исп Монитор = новый МониторФайловойСистемы()
Монитор.Отслеживать(Каталог)
Монитор.Отслеживать(Каталог, Глубина = 3)
Монитор.Отслеживать(Каталог, ИменаФайлов = "*.log")
Указать вид событий для отслеживания
Элементы перечисления ВидСобытияФайловойСистемы позволяют вам указать, какие виды событий файловой системы необходимо отслеживать. Поддерживаются следующие виды событий:
- Создание — создание файла или подкаталога;
- Удаление — удаление файла или подкаталога;
- Изменение — изменение файла или подкаталога;
- ПотеряСобытий — специальное событие, указывающее на потерю событий файловой системы. Это происходит, когда файловая система не успевает обработать поступающие события и буфер событий переполняется. Рекомендуем вам обрабатывать это событие отдельно: например, полностью пересмотреть каталог и заново выполнить все необходимые операции.
пер Каталог = новый Файл("C:\\TargetDirectory")
исп Монитор = новый МониторФайловойСистемы()
Монитор.Отслеживать(Каталог, ВидыСобытий = ВидСобытияФайловойСистемы.Создание)
Получить и обработать события файловой системы
Для получения и обработки событий файловой системы используйте метод ПолучитьСобытия() типа МониторФайловойСистемы. Данный метод возвращает массив объектов СобытиеФайловойСистемы, содержащих информацию о полученных событиях (вид события и Файл, для которого это событие произошло). Используйте параметр Таймаут, чтобы указать длительность ожидания новых событий, если в данный момент очередь событий пуста. Если по истечении указанного времени ни одно событие не произошло, метод ПолучитьСобытия возвращает пустой массив. Если Таймаут не указан, ожидание происходит неограниченно долго, пока не будет зарегистрировано событие, удовлетворяющее настройкам поиска.пер Каталог1 = новый Файл("C:\\Directory1")
пер Каталог2 = новый Файл("C:\\Directory2")
исп Монитор = новый МониторФайловойСистемы()
// Создайте методы для изначальной обработки
// имеющихся в каталоге файлов и подкаталогов
// ОбработатьВесьКаталог(Каталог1)
// ОбработатьВесьКаталог(Каталог2)
Монитор.Отслеживать(Каталог1)
Монитор.Отслеживать(Каталог2,
ВидыСобытий = ВидСобытияФайловойСистемы.Удаление,
ИменаФайлов = "*.txt")
пока Истина
// Ожидание новых событий
пер МассивСобытий = Монитор.ПолучитьСобытия()
для Событие из МассивСобытий
если Событие.ВидСобытия == ВидСобытияФайловойСистемы.Создание
// Создайте метод для обработки событий создания файлов.
// Используйте свойство "Событие.Файл", чтобы получить
// информацию о созданном файле
// ОбработатьСоздание(Событие)
;
если Событие.ВидСобытия == ВидСобытияФайловойСистемы.Удаление
// Создайте метод для обработки событий удаления файлов.
// Используйте свойство "Событие.Файл", чтобы получить
// информацию об удаленном файле
// ОбработатьУдаление(Событие)
;
если Событие.ВидСобытия == ВидСобытияФайловойСистемы.ПотеряСобытий
// Заново обработайте весь каталог при потере событий
// ОбработатьВесьКаталог(Событие.Файл)
;
;
;