在iOS下载并解压文件

我想下载一个zip文件,里面包含了一个文件夹,里面有很多用于我的发音的文件audio。 我使用ASIHTTPRequest来下载它,我的问题是“我不知道如何解压该文件”。 我试图使用SSZipArchiveZipArchive两个都是基于minizip但我得到错误,当我编译代码Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o 。 那么你能给我一些build议吗?

我以前使用ZipArchive成功了。 这是相当ligyweight和使用简单,支持密码保护,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引入了本地压缩/解压缩文件的function。 您也可以select通过Mail,Messages,Airdrop和“Open in”发送zip文件。 关键是: 这个zip文件必须得到iOS的支持有些是,有些则不是。 第一步:找出您的文件是否受支持。 通过简单的检查你新保存的文件来做到这一点。 尝试打开它。 如果卡住“正在等待…”,则可能不支持。 如果是这种情况,请尝试使用其他库或使用解决方法。

现在,以编程方式执行此操作当前需要使用第三方库来保存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文件。