zip压缩和解压缩

Zipachieve第三方框架下载地址:

https://code.google.com/archive/p/ziparchive/downloads

1.下载完成后解压,将文件拉入项目中,这是可能会报错;

2.添加libz.1.2.5.tbd,此时运行一下,要是仍然有错可能是ARC的问题,修改不兼容ARC(-fno-objc-arc);

3.上代码:

下载一个zip文件:

NSURL *url=[NSURL URLWithString:@"http://192.168.1.102:8080/zip/JFTestFramework.framework.zip"];
    NSMutableURLRequest *re=[NSMutableURLRequest requestWithURL:url];

    [NSURLConnection sendAsynchronousRequest:re queue:[NSOperationQueue new] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        if (data) {
            NSLog(@"%ld",data.length);
             [self performSelectorOnMainThread:@selector(saveFramework:) withObject:data waitUntilDone:YES];
        }else{

            NSLog(@"加载失败");
        }

    }];

保存下载的压缩包,解压压缩包,并删除原来的压缩包:

-(void)saveFramework:(NSData*)data{
    NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *zipPath = [NSString stringWithFormat:@"%@/%@",documentDirectory,@"framework.zip"];
    NSLog(@"1---------%@",zipPath);
   // NSLog(@"%@",data);

    NSString *bundlePath = [NSString stringWithFormat:@"%@/%@",documentDirectory,@""];
    [data writeToFile:zipPath atomically:YES];

    ZipArchive *zip=[[ZipArchive alloc]init];
    if ([zip UnzipOpenFile:zipPath]) {
        NSLog(@"打开成功");
        if ([zip UnzipFileTo:bundlePath overWrite:YES]) {
            NSLog(@"解压成功");
            [[NSFileManager defaultManager]removeItemAtPath:zipPath error:nil];
            [zip UnzipCloseFile];
        }

    }
    ;
}

此时打开文件下载路径可以看到下载解压之后的文件:

时间: 2024-12-21 07:05:50

zip压缩和解压缩的相关文章

Linux学习---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)

1.压缩和解压缩命令    常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar    .zip格式压缩和解压缩命令        zip 压缩文件名 源文件:压缩文件        zip -r 压缩文件名 源目录:压缩目录        unzip 压缩文件名:解压缩 .zip文件    .gz格式压缩和解压缩        gzip 源文件:压缩为.gz 格式的压缩文件,源文件会消失        gzip -c 源文件 > 压缩文件:压缩为.gz 格式,源

Java对zip格式压缩和解压缩

Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件.gzip在压缩文件中的数据时使用的就是zlib.为了保存与文件属性有关的信息,gzip需要在压缩文件(*.gz)中保存更多的头信息内容,而zlib不用考虑这一点.但gzip只适用于单个文件,所以我们在UNIX/Linux上经常看到的压缩包后缀都是*.tar.gz或

java架构 [Java 基础] 使用java.util.zip包压缩和解压缩文件

Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip"); ZipFile zipFile = new ZipFile(file); System.out.println("压缩文

[Java 基础] 使用java.util.zip包压缩和解压缩文件

reference :  http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip&quo

使用commons-compress操作zip文件(压缩和解压缩)

http://www.cnblogs.com/luxh/archive/2012/06/28/2568758.html Apache Commons Compress是一个压缩.解压缩文件的类库. 可以操作ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2格式的文件,功能比较强大. 在这里写两个用Commons Compress把文件压缩成zip和从zip解压缩的方法. 直接贴上工具类代码: /** * Zip文件工具类 * @a

Java用ZIP格式压缩和解压缩文件

转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutputstream能够实现文件压缩,全部写入到zipoutputstream输入流中的数据,都会被ZIP格式压缩. 每一个被压缩的文件或者文件夹在zip文件里都相应一个zipentry对象,每一个zipentry都有一个name属性,表示它相对于zip文件文件夹的相对路径,对于文件夹,路径以“/“结尾,对

java压缩和解压缩Zip、Jar、Gzip文件

我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输.在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP.JAR.GZIP等形式,GZIP主要是在Linux系统下的压缩文件. 下面主要讲的就是ZIP形式的压缩文件,而JAR.GZIP形式的压缩文件也是类似的用法. ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util.zip这个包里面的类.主要有ZipFile. ZipOutputStream.ZipInput

压缩和解压缩

    压缩和解压缩不仅对Windows系统有很大的帮助,对Linux系统也有很大的帮助.例如我们从网上下载原文件,或其他文件,我们下载过是需要解压缩才能用的,因为我们下载的多是压缩文件.而且压缩文件可以减省我们的磁盘空间.下面我们来一起学习压缩和解压缩的使用. 压缩和解压缩工具 压缩比: 目的:时间 换 空间 CPU的时间 --> 磁盘空间 压缩和解压缩: compress/uncompress,.z gizp/gunzip, .gz bzip2/bunzip2, .bz2 xz/unxz,

iOS中使用ZipArchive压缩和解压缩文件-备

为什么我需要解压缩文件 有许多原因能解释为什么我要在工程中使用压缩和解压缩功能,下面是几个常见的原因: 苹果App Store的50M下载限制 苹 果公司出于流量的考虑,规定在非WIFI环境下,限制用户只能下载小于50M的应用或游戏.这样一来,对于一些数据或数据包较大的应用,我们只能尽量减小 应用二进制包的体积.而把数据打包到zip中,这样App可以通过网络下载数据包,解压出所需要的内容,而且这样也可以动态的更新内容. 动态更新内容 这 一点在上面已经提过了.如果应用所需要的资源需要动态更新,一

ios开发网络学习五:MiMEType ,多线程下载文件思路,文件的压缩和解压缩

一:MiMEType:一般可以再百度上搜索到相应文件的MiMEType,或是利用c语言的api去获取文件的MiMEType : //对该文件发送一个异步请求,拿到文件的MIMEType - (void)MIMEType { //    NSString *file = @"file:///Users/文顶顶/Desktop/test.png"; [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[