Определить, был ли файл изменен, даже в течение последней секунды, без хеширования? - PullRequest
4 голосов
/ 23 ноября 2010

Это относится к Mac, но может также относиться к Linux, поэтому я пометил его так:

Я рекурсивно просматриваю каталог и получаю дерево с атрибутами файловой системы.

Затем я повторяю снова (и снова, и снова) каждый раз, когда окно возвращается в фокус.Когда я читаю каталог, я ищу все файлы, которые были изменены, и мне нужно действовать с ними.

Очевидная вещь, которая пришла мне в голову, - это сравнить даты модификации каждого файла, однако мои юнит-тестыдоказал, что это ненадежно, поскольку сами тесты выполняются менее чем за секунду ... в результате файлы, измененные моими тестами, считаются неизмененными (так как с точностью до 1 секунды).

Мое исправление до сих порКроме того, сравнивался размер файла, но при этом существует риск того, что если файл был изменен, и полученный размер будет таким же, он также останется незамеченным.

Далеко от хеширования каждого файла, что просто невыполнимо (слишком медленно при рекурсии всего дерева каталогов), есть ли что-то еще, что я могу использовать, что предлагает HFS / HFS +?Как какой-то номер версии / количество модификаций, прикрепленных к файлу?Боюсь, что нет, хотя на самом деле крайний случай, когда файлы меняются так же быстро, как меняются мои модульные тесты, вряд ли будет проблемой в реальном случае использования.

1 Ответ

12 голосов
/ 23 ноября 2010

Решения с минимальной загрузкой в ​​режиме реального времени:

Обратите внимание, что ваша проблема, связанная с разрешением времени изменения, относится только к HFS + .

Наиболее распространенным кроссплатформенным решением является Монитор изменения файлов .

Дополнительные ссылки:

...