Обнаружение изменений файлов

Служба синхронизации файлов платформы Sync Framework автоматически обнаруживает изменения, сделанные в файлах или папках в области синхронизации. 

Сравнение неявного и явного обнаружения изменений

Обнаружение изменений следует проводить до запуска сеанса синхронизации. По умолчанию обнаружение изменений выполняется автоматически, когда платформы Sync Framework в первый раз вызывают в службе синхронизации метод GetChangeBatch или ProcessChangeBatch.

Управляемый код Если в приложении при инициализации службы синхронизации задан флаг ExplicitDetectChanges, то приложение должно явно вызвать метод DetectChanges до запуска сеанса.

Неуправляемый код Если в приложении при инициализации службы синхронизации задан флаг FILESYNC_INIT_FLAG_DISABLE_IMPLICIT_DETECT_CHANGES, то оно должно явно вызвать метод IFileSyncProvider::DetectChanges до запуска сеанса.

Встроенный алгоритм обнаружения изменений

В платформах Sync Framework есть встроенный алгоритм обнаружения изменений, произведенных в файлах и папках в области синхронизации.

Если изменилось одно из следующих свойств, то об изменении сообщается.

  • Время последнего изменения файла.

  • Значение хэша, вычисленное для данного файла, если хэширование включено.

  • Размер файла.

  • Имя файла или папки. При проверке этого свойства учитывается регистр символов.

  • Любой из атрибутов файла, обрабатываемых службой.

О перемещении или переименовании файла сообщается, если найден файл с таким же временем создания, размером и хэшем (если использовалось хэширование), как и у ранее известного, но у этого файла другое имя или путь. Если этим критериям удовлетворяют несколько файлов, то платформы Sync Framework действуют таким образом, как если бы исходный файл был удален и были созданы новые файлы.

Платформы Sync Framework рассматривают перемещение или переименование папки как удаление одной папки и создание другой. Файлы в папке записываются как перемещенные. Таким образом, в данном случае данные в файлах обычно не приходится отправлять повторно.

Вычисление значения хэша для обнаружения изменений

Если в приложении задан флаг CompareFileStreams (для управляемого кода) или FILESYNC_INIT_FLAG_USE_HASHING (для неуправляемого кода), то служба синхронизации при инициализации вычисляет значение хэша для каждого файла на основе всего содержимого файлового потока. Затем служба сравнивает эти значения хэша, что позволяет более надежно определить наличие изменений за счет небольшого снижения производительности.

См. также

Справочник

FileSyncProvider

FileSyncOptions

Другие ресурсы

Синхронизация файлов

Интерфейс IFileSyncProvider

Перечисление FILESYNC_INIT_FLAGS