Какой самый надежный способ перемещения или копирования больших файлов (> 100 МБ) на iOS?

Прямо сейчас я перемещаю очень большие файлы в iOS с помощью этого метода:

[fileManager moveItemAtURL:srcURL toURL:toURL error:&error];

Это метод из NSFileManager. Поскольку файлы настолько велики, я пытаюсь переместить их вместо копирования, а затем удалить исходный файл.

Есть ли более безопасный способ сделать это?

2 ответа

Решение

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

Это должно быть довольно безопасно.

Если вы действительно хотите быть параноиком, тогда:

  • скопировать все байты из A в B
  • проверить B является связным
  • удалить А

Именно это и делают "атомарные" варианты для API записи / копирования под прикрытием, за исключением части проверки, потому что файловая система сама должна это делать.

То, что вы делаете, правильно и эффективно. Перемещение файла (если в одну и ту же файловую систему) происходит практически мгновенно. Но копировать и удалять очень медленно. Обратите внимание, что перемещение файла в другую файловую систему фактически выполняется с помощью копирования и удаления.

Другие вопросы по тегам