如何在iOS上解压缩.zip文件?

时间:2013-04-19 12:52:30

标签: iphone ios objective-c in-app-purchase storekit

在StoreKit下载IAP内容包后,它会向我返回一个NSURL,如下所示:

  

文件://localhost/private/var/mobile/Applications/45EF2B3A-3CAB-5A44-4B4A-631A122A4299/Library/Caches/BA32BC55-55DD-3AA4-B4AC-C2A456622229.zip/

尽管我发现所有来源都声称StoreKit在下载后解压缩了内容包,但它还是通过ZIP传递给我。此ZIP可能包含内容包的文件结构。但是我如何解压缩呢?

2 个答案:

答案 0 :(得分:31)

使用SSZipArchive

您可以使用此解压缩

NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:@"/ImagesFolder"];

NSString *zipPath = Your zip file path;

[SSZipArchive unzipFileAtPath:zipPath toDestination:outputPath delegate:self];

希望它对你有所帮助。

答案 1 :(得分:9)

用于压缩/解压缩iPhone文件的第三方工具

https://github.com/soffes/ssziparchive

使用起来非常简单。希望有所帮助!!

编辑:

我创建的快速方法,其中包含url,下载zip并解压缩

-(void)downloadAndUnzip : (NSString *)sURL_p : (NSString *)sFolderName_p
{
    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
    dispatch_queue_t main = dispatch_get_main_queue();
    dispatch_async(q, ^{
        //Path info
        NSURL *url = [NSURL URLWithString:sURL_p];
        NSData *data = [NSData  dataWithContentsOfURL:url];
        NSString *fileName = [[url path] lastPathComponent];
        NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
        [data writeToFile:filePath atomically:YES];
        dispatch_async(main, ^


                 {
                       //Write To
                       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                       NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
                       NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:sFolderName_p];

                       [SSZipArchive unzipFileAtPath:filePath toDestination:dataPath];

                   });
});

}