- Чтобы обнаружить изменения в файле, я использую опрос с указанием времени последнего обновления и ReadDirectoryChangesW.
- Затем я попытаюсь открыть файл с помощью CreateFileA в режиме общего доступа. как READ, чтобы проверить, полностью ли создан или скопирован файл.
- Затем я начну копировать файлы с помощью CopyFileExW.
Код: Выделить всё
Modification eventКод: Выделить всё
Queued to processКод: Выделить всё
CopyingКод: Выделить всё
Try laterКод: Выделить всё
Start copyКод: Выделить всё
Try to lock fileКод: Выделить всё
copiedСобытие
Статус
Действие
Комментарий
Измененное событие
Копирование или создание
В очереди на обработку
Копирование или создание
Попробуйте заблокировать файл
Копирование или создание
Попробовать позже
Измененное событие
Копирование или создание
В очереди на обработку
Скопировано или создано
Событие, ожидающее изменения
Попытка заблокировать файл
Скопировано или создан
Начать копию
< td>Измененное событие
Скопировано или создано
В очереди на обработку
Скопировано или создано
Попробуйте заблокировать файл
Скопировано или создано< /td>
Начать копирование
/div>
Здесь я копировал один и тот же файл два раза без каких-либо изменений, так как мне этого избежать? Я думаю, что не могу использовать хэш файла, поскольку размер файла составляет несколько ГБ (около 30 ГБ).
Я попробовал сравнить время последнего обновления удаленного файла со временем создания локального файла. Это надежно?
Код: Выделить всё
if last update time of remove file > creation time of local file:
do copy;
else:
ignore;
Вот связанный с этим вопрос. Как определить, что файлы завершены копирование для дальнейшей обработки?
Подробнее здесь: https://stackoverflow.com/questions/786 ... ve-windows