【发布时间】:2011-06-15 04:03:17
【问题描述】:
我正在使用 NSTask 从我的应用程序中执行一个 zip 命令。它作为参数传递一些指向要压缩的文件/文件夹的路径。
问题在于,如果没有 -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 微妙之处的建议。
-----编辑
我忘记添加的另一件事是传递的原始目录是“路径”,因此在我看来,期望的结果也是预期的结果。
【问题讨论】: