Лучший способ скопировать или переместить файлы с Objective-C? - PullRequest
32 голосов
/ 29 января 2009

Мне было интересно, есть ли лучший способ написать программу для OSX, которая копирует или перемещает файл из одного места в другое?

  • Есть ли какой-нибудь метод NSSomething, который я могу вызвать?
  • Нужно ли работать с потоками ввода / вывода?
  • Или, может быть, лучше всего полагаться на передачу команд искателю?

Бонусный вопрос: Как получить проценты в виде "копирования на 12%" одним из этих методов?

Спасибо за вашу помощь!

Ответы [ 3 ]

52 голосов
/ 29 января 2009

NSFileManager и NSWorkspace имеют методы для перемещения, копирования и удаления файлов. Обычно вы используете NSFileManager, так как с ним легче работать:

if ( [[NSFileManager defaultManager] isReadableFileAtPath:source] )
    [[NSFileManager defaultManager] copyItemAtURL:source toURL:destination error:nil];

Однако NSWorkspace может легко перемещать файлы в корзину, чего не может NSFileManager.

[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:foldername destination:@"" files:filenamesArray tag:&tag];

Проверьте документацию для более полного описания двух классов. ( NSFileManager , NSWorkspace )

13 голосов
/ 29 января 2009

[[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dstPath error:&error]

Вот ссылка на ссылку на класс:

http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/copyItemAtPath:toPath:error:

5 голосов
/ 04 мая 2012

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

FSCopyObjectAsync устарел в OS X v10.8

copyfile (3) является альтернативой для FSCopyObjectAsync. Здесь является примером copyfile (3) с обратным вызовом Progress.

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