在 iOS 中解压缩下载的文件



使用ASIHTTPRequest,我下载了一个zip文件,其中包含一个包含多个音频文件的文件夹。我尝试使用 SSZipArchiveZipArchive 解压缩文件,它们都基于 minizip .

当我编译代码时,我收到此错误:Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o

如何在 iOS 中解压缩此文件?

我过去曾成功地使用过ZipArchive。它非常轻巧且易于使用,支持密码保护,ZIP内的多个文件以及压缩和解压缩。

基本用法是:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];

有关此软件包的更多示例,请单击此处

我也在一些项目中尝试过SSZipArchive。下面的行将解压缩您的 zip 文件。

[SSZipArchive unzipFileAtPath:path toDestination:destination];

首先,在iOS 7中,Apple引入了本机压缩/解压缩文件的功能。您还可以选择通过邮件,消息,空投和"打开方式"发送zip文件。关键是:iOS必须支持zip文件,有些是,有些不是。第一步:了解您的文件是否受支持。通过简单检查新保存的文件来执行此操作。尝试打开它。如果它卡在"等待..."它可能不受支持。如果是这种情况,请尝试使用其他库或使用解决方法。

现在,以编程方式执行此操作当前需要使用第三方库来保存 zip 文件并提取它们。这并不理想,因为很多人/公司都避免使用它们。话虽如此,答案标记为正确,ZipArchive 是一个很棒的第三方工具,特别是因为它现在支持 Swift。我建议在Apple推出本机库之前使用它。

在iOS6上,ZIP文件似乎像文件夹一样处理。我通过简单地执行以下操作就取得了成功:

[[NSFileManager defaultManager] copyItemAtPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"ZIP_FILE.zip/Contents/Test.m4a"].path
                                        toPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"Test.m4a"].path
                                         error:nil];

您甚至有可能制作目录列表来解压缩包含未知内容的文件。不知道受密码保护的ZIP文件。

最新更新