使用NSTask创建zip归档文件,其中包含带有文件的一级文件夹

4

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

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];

但是我希望解压后得到的是一个包含文件的文件夹。当然,我可以在临时目录中创建一个文件夹并将文件写入其中,但是有没有什么zip参数可以使文件夹成为创建的归档文件的顶层呢?我在man zip手册中没有看到这个参数。
2个回答

3
这会对你有所帮助。
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];

0

Cesar,感谢您的建议。我的应用程序只需要在用户选择该选项时创建一个zip归档文件,而不是读取一个。很抱歉没有表达清楚,所以我不认为有必要将NSData分类到您引用的链接中(该链接还使用了NSTask),或者在ZipBrowser的情况下创建处理事物的类文件。我正在寻找在内置库中保持可能性,并且认为有人可能知道正确的参数来传递给它。 - lulu
“解压缩”是指用户在Finder中双击zip归档文件时看到的内容。 - lulu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接