Какой самый надежный способ перемещения или копирования больших файлов (> 100 МБ) на iOS?
Прямо сейчас я перемещаю очень большие файлы в iOS с помощью этого метода:
[fileManager moveItemAtURL:srcURL toURL:toURL error:&error];
Это метод из NSFileManager. Поскольку файлы настолько велики, я пытаюсь переместить их вместо копирования, а затем удалить исходный файл.
Есть ли более безопасный способ сделать это?
2 ответа
Перемещение файла - чрезвычайно легкая операция; он не требует копирования чего-либо, поскольку он просто перемещает запись каталога из одной точки в файловой системе в другую.
Это должно быть довольно безопасно.
Если вы действительно хотите быть параноиком, тогда:
- скопировать все байты из A в B
- проверить B является связным
- удалить А
Именно это и делают "атомарные" варианты для API записи / копирования под прикрытием, за исключением части проверки, потому что файловая система сама должна это делать.
То, что вы делаете, правильно и эффективно. Перемещение файла (если в одну и ту же файловую систему) происходит практически мгновенно. Но копировать и удалять очень медленно. Обратите внимание, что перемещение файла в другую файловую систему фактически выполняется с помощью копирования и удаления.