cocoa - 使用 NSTask 创建 zip 存档,其中包含包含文件的第一级文件夹

标签 cocoa zip nstask

我的方法适用于从先前创建和填充的临时目录中压缩文件:

NSURL *destURL = self.archiveDestURL;
NSTask *task = [[NSTask alloc] init];
[task setCurrentDirectoryPath:[srcURL path]]; 
[task setLaunchPath:@"/usr/bin/zip"];
NSArray *argsArray = [NSArray arrayWithObjects:@"-r", @"-q", [destURL path], @".", @"-i", @"*", nil];
[task setArguments:argsArray];
[task launch];
[task waitUntilExit];

但是解压后我想要的是一个包含文件的文件夹。 当然我可以在 tempDir 中创建一个文件夹并在那里写入我的文件,但是让文件夹成为创建的存档中的顶层的 zip 参数是什么?

我在 man zip 中没有看到这个。

最佳答案

这会对你有帮助。

NSTask *unzip = [[NSTask alloc] init];
[unzip setLaunchPath:@"/usr/bin/unzip"];
[unzip setArguments:[NSArray arrayWithObjects:@"-u", @"-d", 
                     destination, zipFile, nil]];

NSPipe *aPipe = [[NSPipe alloc] init];
[unzip setStandardOutput:aPipe];

[unzip launch];
[unzip waitUntilExit];

关于cocoa - 使用 NSTask 创建 zip 存档,其中包含包含文件的第一级文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5380262/

相关文章:

bash - 如何向/bin/bash传递参数?

cocoa - 如何在没有 Accessibility API 的情况下在 Mac OS 中获取另一个应用程序窗口的标题、位置和大小?

objective-c - 检查 NSTimer 是否已添加到 NSRunLoop

在滑动窗口中查找字符串匹配的算法

objective-c - NSTask 阻塞主线程

php - 无法将命令行参数传递给运行 PHP CLI 的 NSTask

objective-c - 两个动态调整大小 View 之间的自动布局约束

macos - 如何从 Objective-C 的 WKWebView 获取选定的文本

java - 使用内存将文件添加到 zip java,同时避免保留文件名问题

javascript - 在 Node js 中以 zip 格式从 amazon s3 存储桶下载图像