iPhone:在运行时下载zip并在主捆绑包子目录中解压缩

iPhone:在运行时下载zip并在主捆绑包子目录中解压缩,iphone,ios,ipad,Iphone,Ios,Ipad,我想扩展我的iPhone应用程序,该应用程序将zip文件下载到其中 然后一个子目录将其提取出来,然后加载zip中的图像 您知道如何在运行时解压并访问图像吗?我真的很乐意有个主意 您好,您无法提取到您的包中。使用[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]获取可写入的目录的路径 您可以使用中的代码从zip存档中提取文件。我过去成功地使用过 它非常轻巧,使用

我想扩展我的iPhone应用程序,该应用程序将zip文件下载到其中 然后一个子目录将其提取出来,然后加载zip中的图像

您知道如何在运行时解压并访问图像吗?我真的很乐意有个主意


您好,

您无法提取到您的包中。使用
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0]
获取可写入的目录的路径

您可以使用中的代码从zip存档中提取文件。

我过去成功地使用过

它非常轻巧,使用简单,支持密码保护,在一个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];

如果将
ZipArchive
添加到项目中,请记住还要添加框架。 正确的框架是
libz.dylib
最新版本(Xcode 4.2)是1.2.5

(将框架添加到目标的“构建阶段”选项卡中包含库的部分。)

我建议您使用bcoz,它支持
ARC
非ARC
项目

  • SSZipArchive.h
    SSZipArchive.m
    minizip
    添加到项目中
  • 将最新版本的
    libz
    (现在是它的
    libz1.2.5
    )库添加到您的目标
  • 对于
    ARC
    ,您不需要做任何事情
    SSZipArchive
    将检测您是否未使用
    ARC
    ,并添加所需的内存管理代码

    代码如下所示:

        NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
        // Unzipping
    
        //If your zip is in document directory than use this code
        NSString *zipPath = [documentsDirectory stringByAppendingPathComponent:@"mediadata.zip"];
        //else if zip file is in bundle than use this code
        NSString *zipPath = [[NSBundle mainBundle] pathForResource:@"mediadata" ofType:@"zip"];
    
        NSString *destinationPath = [documentsDirectory stringByAppendingPathComponent:@"MediaData"];
    
    
        if( [SSZipArchive unzipFileAtPath:zipPath toDestination:destinationPath] != NO ) {
            //unzip data success
            //do something
            NSLog(@"Dilip Success");
        }else{
            NSLog(@"Dilip Error");
        }
    

    如何检查文件是否受密码保护,它是否支持基于ObjC++,我可以得到Objc版本,这样我就不用使用Obj+C++编译器吗?@ Rog我可以用ZiPARCHIVE来为iOS 6i无法使用这个程序来构建,我添加LBZ1.1.2.DyLB,但它没有运行,您要导入哪些框架?我可以使用ios版的Ziparchive吗?不错的回答非常有用,thanx+1If.zip文件在服务器中,如何使用SSZipArchive库。请让我们know@JoshKethepalli在这种情况下,您必须先在本地下载ZIP文件,然后将其解压缩,如果本地存储中没有原始ZIP文件,则无法将其解压缩。当我解压缩文件时,它显示为“.dat”格式。如何像平常一样提取文件folder@JoshKethepalli你能检查一下你的zip吗,下载后它没有损坏。主包是只读的。您不能将文件解压缩到其中,但是可以使用本地目录,如documents目录。