В Какао, вы должны сделать что-то особенное, чтобы убедиться, что вы копируете вилки ресурсов при копировании файлов? - PullRequest
1 голос
/ 30 октября 2009

Я предполагал, что могу просто сделать это, но у меня нет способа проверить, что вилки ресурсов пошли вместе.

NSFileManager *fm = [NSFileManager defaultManager];
[fm copyPath:absSourcePath toPath:absDestinationPath handler:err];

edit: мне нужно скопировать 10.4-6 совместимым способом. (Да, действительно 10.4.)

Ответы [ 3 ]

4 голосов
/ 30 октября 2009

NSFileManager копирует ветку ресурса. Вам не нужно ничего делать.

Вчера я опубликовал сравнение различных свойств, которые копируются / теряются при копировании файлов. Я также тестирую NSFileManager, и он лучше справляется с копированием файлов, чем большинство других инструментов.

Comparison of tools and preservation of meta data

посмотреть в полном размере

Причина, по которой красный цвет для NSFileManager в столбце «50», заключается в том, что NSFileManager не обнаруживает жестко связанные файлы. Таким образом, вместо создания жестких ссылок, он создает один и тот же файл несколько раз, будет форк данных + ветвь ресурсов. Итак, ресурсный форк работает.

Мой код вдохновлен резервной копией

4 голосов
/ 30 октября 2009

Да, все копируется, включая права доступа к файлам, подкаталоги, символические ссылки, вы называете это. Документация рекомендует использовать copyItemAtPath:toPath:error: в 10.5 и более поздних версиях, так что вы можете поработать с этим, если это возможно. Он недоступен в 10.4, поэтому вам придется использовать copyPath:toPath:handler:.

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

0 голосов
/ 30 октября 2009

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

http://www.macosxhints.com/article.php?story=2002022409532098

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