Если вы не можете запустить процесс при изменении, вы ничего не можете сделать, кроме как сканировать файловую систему и проверить дату / время изменения. Это требует от вас сохранения последней даты / времени каждого файла и сравнения.
Вы можете ускорить это, используя архивный бит (хотя это может испортить ваше ПО для резервного копирования, поэтому продолжайте осторожно).
Бит архива является атрибутом файла
присутствует во многих компьютерных файловых системах,
особенно FAT, FAT32 и NTFS.
Цель бита архива - отслеживать
постепенные изменения в файлах для
цель резервного копирования, также называется
архивирование.
Поскольку бит архива является двоичным, он
либо 1, либо 0, либо в этом случае больше
часто вызываемый set (1) и clear
(0). Операционная система устанавливает
бит архива в любое время, когда файл
создан, перемещен, переименован или иным образом
модифицировано любым способом. Архив бит
поэтому представляет собой одно из двух
состояния: «изменен» и «не изменен»
с момента последнего резервного копирования.
Архивные биты не подвержены влиянию
просто читая файл. Когда файл
скопировано, исходный файл архива
бит не влияет, однако копия
бит архива будет установлен во время
копия сделана.
Таким образом, процесс будет:
- Очистить бит архива для всех файлов
- Позволяет файловой системе меняться со временем
- Сканирование всех файлов - любые с установленным битом архива были изменены
Это избавит вашу программу от необходимости сохранять состояние, а поскольку вы просматриваете только записи каталога (где хранится бит) и они кластеризованы, это должно быть очень и очень быстро.
Однако, если вы можете запустить процесс во время изменений, вам нужно взглянуть на класс FileSystemWatcher . Вот пример того, как вы можете его использовать.
Он также существует в .NET (для будущих исследователей этого типа проблем)
Возможно, вы можете оставить процесс запущенным на машине, наблюдая за изменениями и создавая файл, который вы сможете прочитать позже.
-Adam