Подтвердить что ты не робот

Лучший способ скопировать или переместить файлы с помощью Objective-C?

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

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

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

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

4b9b3361

Ответ 1

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)

Ответ 3

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

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

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