Я ищу хороший эффективный метод сканирования структуры каталогов для измененных файлов в Windows XP +.Что-то вроде того, как git делает это именно то, что я ищу: при запуске git status
он отображает все измененные файлы, все новые (неотслеживаемые) и удаленные файлы очень быстро, и это именно то, что я хотел бы сделать.
У меня есть базовая модель, которая выполняет начальное сканирование и сохраняет все имена файлов, размер, даты и атрибуты.
При последующем сканировании проверяется, изменились ли размер, атрибуты или дата, ипомечается как измененный файл.
Теперь моя проблема заключается в обнаружении перемещенных и удаленных файлов.Есть ли проверенный метод для такого рода вещей?Я изо всех сил пытаюсь найти хороший метод.
Я должен упомянуть, что в конечном итоге он будет использовать ReadDirectoryChangesW
для мониторинга файлов и оповещения пользователя, когда что-то изменится, поэтому полное сканирование действительно является последним средством посленачальное сканирование.
Спасибо, J
РЕДАКТИРОВАТЬ: Я думаю, что я, возможно, описал проблему плохо.Проблема, с которой я сталкиваюсь, заключается не столько в обнаружении изменений - я ReadDirectoryChangesW()
использую IOCP в нескольких потоках, чтобы обнаружить, когда происходит изменение, проблема больше в том, что делать с информацией.Например, перемещенный файл сообщается как удаление, за которым следует создание, а переименование состоит из двух частей: старое имя, за которым следует новое имя.Итак, я спрашиваю, как провести различие между удалением как частью перемещения и фактическим удалением.Я полагаю, что буферизация изменений и обработка пакетов будет возможной, но она выглядит грязной.