iOS压缩 解压文件那些事
来源:互联网 发布:推广软件拦截 编辑:程序博客网 时间:2024/04/30 02:48
今天朋友说做解压的时候遇到好些问题,于是帮着看看了,也把自己之前做项目遇到的整理下,让自己跟各位朋友再次遇到少走一些弯路
>
使用minizip压缩文件
先决条件:
首先下载minizip 的库文件http://www.winimage.com/zLibDll/minizip.html
其次需要添加头文件支持 #include "../../zip.h" #include "../../unzip.h"
另外,要添加库文件的支持 UnzipUD.lib
几个重要的结构
目标文件结构:zipFile zf;
待压缩文件的结构:zip_fileinfo zi;//zip文件信息
几个重要的函数:
打开目标文件:zf = zipOpen(W2CA(strZipFile),0);
添加新的压缩文件:zipOpenNewFileInZip(...)//添加新的压缩文件
将数据写入目标文件:zipWriteInFileInZip (zf,buf,size_read);//写入目标文件中
关闭目标文件:zipClose(zf,NULL);//关闭目标文件
网络资源:
http://blog.csdn.net/yyyzlf/archive/2009/11/19/4833667.aspx
http://ty263.spaces.live.com/blog/cns!AEDC97760A4C885F!156.entry
http://www.vckbase.com/english/code/misc/mapizip.shtml.htm
#pragma mark --zip文件解压
-(void)uncodeZipFile:(NSString *)packageName//解压完成以后删除压缩包
newAppVersionCode:(NSString *)newAppVersionCode//设置新版本
button:(UIButton *)GSMButton{
NSString * path =[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"];
NSString *zipPath = [pathstringByAppendingPathComponent:[NSStringstringWithFormat:@"%@.zip", packageName]];
NSData *fileData = [NSDatadataWithContentsOfFile:zipPath];
NSLog(@"filesize %@==========%lu",packageName,(unsignedlong)fileData.length);
ZipArchive *za = [[ZipArchivealloc] init];
if ([zaUnzipOpenFile: zipPath]) {
BOOL ret = [zaUnzipFileTo: path overWrite: YES];
if (NO == ret){
NSLog(@"解压失败");
}else{
[MyUserDefaultsetUserDefaultWithValue:newAppVersionCodeforKey:packageName];//保存新的版本号Code
NSFileManager * fileManager = [NSFileManagerdefaultManager];
[fileManager removeItemAtPath:zipPatherror:nil];//解压完成以后,删除zip包
// [self bundleLoadDylibWithPath:[NSString stringWithFormat:@"%@/%@", path, packageName] button:GSMButton];
[self dlopenLoadDylibWithPath:[NSStringstringWithFormat:@"%@/%@", path, packageName] packageName:packageName button:GSMButton];
}
[za UnzipCloseFile];
}
}
>使用Unrar4iOS
此三方库存在些问题:
1.不支持armv7s;
2.编译好的framework中将Unrar4iOS.h和Unrar4iOS.mm编译在内有些方法并未实现,比如-(BOOL) unrarFileTo:(NSString*) path overWrite:(BOOL) overwrite;该方法的实现居然是空的也就是什么都没做(原作者最终虽然更新了两个文件但是并未重新编译framework);
3.对于第二个问题可能有人会说把Unrar4iOS.h和Unrar4iOS.mm这两个文件重新拉近项目中不就可以了吗?答案是“如果你的项目中other link flags没有设置为-ObjC是可以这么做的,否则的话会报一些标识符重复的错误”。
这时需要做一系列修改:具体做法见下面网址,该博主列的很详细,在此不一一叙述了
http://www.cnblogs.com/zzltjnh/p/3961456.html
- iOS压缩 解压文件那些事
- Linux下压缩解压的那些事
- iOS开发之压缩与解压文件
- IOS 压缩与解压字符串(文件) 操作
- IOS使用ZipArchive压缩解压文件
- iOS压缩和解压
- iOS 压缩和解压
- 压缩与解压iOS
- iOS zlib 压缩解压
- 文件压缩与解压
- linux压缩解压文件
- 压缩和解压文件
- c# 压缩解压文件
- C# 压缩解压文件
- 文件压缩和解压
- c# 压缩解压文件
- android 压缩解压文件
- 文件解压压缩
- 2016年11月30日学习总结----C语言中野指针的定义、危害及规避
- [leetcode]7. Reverse Integer
- 高性能MySQL之--聚簇索引
- poj_2635 The Embarrassed Cryptographer(高精度求模)
- Datastage 从资料库抽取监控数据
- iOS压缩 解压文件那些事
- php isset函数对比empty函数之间的区别及其使用方法
- Hadoop学习体系
- 剑指Offer——毕业生求职网站汇总(干货)
- Servlet笔记
- PMP--项目整合管理(二)
- 几步教你怎么写MVP
- Spring Boot 菜鸟教程 11 html页面解析-jsoup
- 设置网页标题图片