• 注册
当前位置:1313e > 默认分类 >正文

iOS文件解压缩、带密码解压缩、压缩文件情况处理

2017年上半年,忙碌的半年,直到现在才有时间总结总结之前几个月用到的相关技术,记录下来,跟大家分享。
之前在做一个与H5混合开发的应用时,我负责处理大文件(也就是H5应用包)的下载、解压、MD5校验等工作。下载文件,大家肯定并不陌生,有很多种方法可以完成,大家可以选择自己熟悉或者适合自己项目的下载框架去完成,我使用的是NSURLSession。关于下载的具体细节在这里不再阐述,稍后我会继续写一篇博文主要介绍大文件下载和异步下载并存储问题,今天主要介绍iOS文件的代码解压和压缩问题。
关于解压和压缩,我找到了一个好用的框架ZipArchive。当然,大家有什么好的资源也可以互相交流,在这里我主要讲解关于ZipArchive的使用。
首先,导入ZipArchive文件,其次,将ZipArchive.mm改为使用MRC,在Buid Setting里的Build Phases的Compile Sources找到ZipArchive.mm文件,在它后面添加-fno-obje-arc.最后就是关于ZipArchive的方法的调用了。
导入#import “ZipArchive.h”
1.解压有密码的文件

ZipArchive *za = [[ZipArchive alloc] init];// 1打开文件,并在内存中解压if ([za UnzipOpenFile:zipPath Password:@"123"]) {// 2把解压出的内存写入caches目录BOOL ret = [za UnzipFileTo:dirPath overWrite:YES];if (NO == ret){NSLog(@"%@解压失败",FileName);}else{NSLog(@"%@解压成功",FileName);}[[NSFileManager defaultManager] removeItemAtPath:zipPath error:nil];[za UnzipCloseFile];
2.解压无密码的文件
ZipArchive *za = [[ZipArchive alloc] init];//无密码解压压缩包if ([za UnzipOpenFile:md5path]) {BOOL ret = [za UnzipFileTo:dirpath overWrite:YES];if (NO == ret){NSLog(@"无密码解压失败");}else{NSLog(@"无密码解压成功");[[NSFileManager defaultManager] removeItemAtPath:md5path error:nil];}[za UnzipCloseFile];}
以上是关于带密码解压和无密码解压的两个方法的调用,其中的zipPath和md5Path是你要解压的zip包的文件路径,dirPath是你解压后的文件保存的路径。
ZipAchive还有两个关于压缩文件的方法,即:
-(BOOL) CreateZipFile2:(NSString*) zipFile;
-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password;
大家可以自己去调用一下试试。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录