Я выполняю команду zip из моего приложения, используя NSTask.В качестве аргументов передаются некоторые пути, которые указывают на файлы / папки, которые будут заархивированы.
Проблема в том, что без опции -j конечный zip заканчивается абсурдными путями к файлам внутри zip (например, "/ private")./var/folders/A5/A5CusLQaEo4mop-reb-SYE+++TI/-Tmp-/9101A216-5A6A-4CD6-A477-E4B86E007476-51228-00014BCB9514323F/myfile.rtf ").Однако, если я добавлю опцию -j, то я постоянно сталкиваюсь с конфликтами имен, если какой-либо файл где-то глубоко во вложенной папке имеет
. Я пытался задать путь перед выполнением NSTask:
[[NSFileManager defaultManager] changeCurrentDirectoryPath:path];
В надежде, что документация для zip говорит правду:
По умолчанию zip будет хранить полный путь ( относительно текущего каталога )
Но это не сработало, как ожидалось.Настройка параметров -j и -p и -r просто создает вышеупомянутые проблемы в различных комбинациях.
ВОПРОС:
Как взять набор каталогов, например
- / some / long / path / sub1 / file1.txt
- / some / long / path / sub2 / file1.txt
и заархивируйте их в архив, содержимое которого
- / sub1 / file1.txt
- / sub2 / file1.txt
Спасибо за любые советы по тонкостям zip.
----- РЕДАКТИРОВАТЬ
Еще одна вещь, которую я забыл добавить, это то, что исходный каталог, который передается, - это «путь», поэтому желаемый результат, на мой взгляд, также является ожидаемым результатом.