NSFileManager contentsEqualAtPath: andPath: сравнить данные контрольной суммы - PullRequest
2 голосов
/ 05 октября 2010

Создает ли метод NSFileManager contentsEqualAtPath:andPath: динамическую контрольную сумму для сравнения двух файлов, открывает ли он заголовок файла и сравнивает ли его данные или использует какой-то другой метод для сравнения?

У меня естьсписок 200 000 или около того файлов, чтобы сравнить, где должны сравниваться локальные файлы с файлами на томе удаленного сервера.Локальные файлы были бы скопированы с тома удаленного сервера в некоторый момент в прошлом, и я пройдусь по списку файлов для сравнения каждого из них, а затем скопирую любые более новые файлы с тома удаленного сервера на локальный компьютер (перезаписывая любыесуществующий).Нет гарантии, что файлы удаленного сервера были созданы локальным пользователем (и, скорее всего, они не были бы).

Поскольку файлы имеют небольшой размер (около 4 КБ), это сложная операция сравнения файлов.может занять почти столько же времени, сколько операция копирования.

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

Сама операция будет выполняться в отдельном потоке, поэтому у меня нет проблем связывания пользователя, когда операция завершится.

Я начал реализацию, чтобы проверить это, но мне было интереснопосмотрите, имел ли кто-нибудь опыт быстрого сравнения тысяч файлов, чтобы определить, какие файлы нужно обновить, если существует более новый.И если у вас есть, есть ли у вас какие-либо указатели или подводные камни, чтобы избежать?

Любой совет, который высоко ценится.

Обновление

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

1 Ответ

1 голос
/ 05 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...