J'exécute une commande zip à partir de mon application en utilisant NSTask. Il est passé en arguments certains chemins qui pointent vers les fichiers/dossiers à compresser. Le problème est que sans l'option -j, le zip final se termine par des chemins de fichier absurdes à l'intérieur du zip, (comme "/ private/var/folders/A5/A5CusLQaEo4mop-reb-SYE +++ TI/-Tmp -/9101A216-5A6A-4CD6-A477-E4B86E007476-51228-00014BCB9514323F/myfile.rtf "). Cependant, si j'ajoute l'option -j, puis-je utiliser en permanence dans les collisions de noms si un fichier ne importe où dans un dossier profondément imbriqué aZip à partir de la ligne de commande - comment rogner les éléments de chemin
J'ai tenté de mettre sur le chemin avant d'exécuter la NSTask:
[[NSFileManager defaultManager] changeCurrentDirectoryPath:path];
dans l'espoir que la documentation zip dit la vérité:
par défaut, zip stocke le chemin complet (par rapport au répertoire courant)
Mais cela n'a pas fonctionné comme prévu. Ajuster les paramètres de -j et -p et -r produit simplement les problèmes mentionnés ci-dessus dans différentes combinaisons.
QUESTION:
Comment puis-je prendre un ensemble de répertoires comme
- /some/long/path/sub1/file1.txt
- /some/long/chemin/SUB2/fichier1 txt
et les zip dans un zip dont le contenu est
- /sub1/file1.txt
- /sub2/file1.txt
Merci pour tout conseil sur les subtilités de zip.
----- EDIT
Une autre chose que j'oublié d'ajouter que le répertoire d'origine étant passé est « chemin », de sorte que le résultat souhaité est également à l'esprit le résultat attendu.
Cela ressemble à une excellente solution, merci. Je ne sais pas comment j'ai raté la méthode de répertoire spécifique à la tâche. Je n'ai pas testé cela depuis que j'ai réussi à trouver un autre itinéraire. Une autre question que j'ai à ce sujet, et sur la solution que je fournis est, que se passe-t-il si les deux répertoires n'ont pas de parent commun? – SG1
@ SG1 Je ne pense pas que l'utilitaire de ligne de commande 'zip' puisse le faire si les répertoires n'ont pas de parent commun. Vous pouvez copier les répertoires dans un répertoire, même si ce n'est pas l'idéal. –