代码写解压zip文件
最近项目中服务器方返回了zip文件类型的文件,在网上搜了好多资料做成一个Demo,这里用来详解一下。
ZipArchive类来源于网络。还望多多交流。
1、首先添加libz.dylib框架
2、前往http://code.google.com/p/ziparchive/downloads/list下载所需要的第三方文件,并将其导入到项目中。
3、代码:
ZipArchive* zip = [[ZipArchivealloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dcoumentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
//获取解压缩文件
NSString* l_zipfile = [dcoumentpath stringByAppendingString:[NSString stringWithFormat:@"/%@",ZipName]] ;
//获取路径 aaa.zip 压缩包解压缩后会出现 aaa 文件夹 去aaa文件夹中取文档和子文件夹里面的文档
NSArray *arr = [ZipName componentsSeparatedByString:@"."];
NSString* unzipto = [dcoumentpath stringByAppendingString:[NSStringstringWithFormat:@"/%@",[arr objectAtIndex:0]]] ;
NSString *str = [[NSString alloc] init];
str = unzipto;
if( [zip UnzipOpenFile:l_zipfile] ) {
BOOL ret = [zip UnzipFileTo:unzipto overWrite:YES];
if( NO==ret ) { }
[zip UnzipCloseFile];
}
[zip release];
//解压缩后或多处一个 __MACOSX 文件夹 做删除操作
NSFileManager *fileManager = [NSFileManagerdefaultManager];
NSString *strpath = [unzipto stringByAppendingFormat:@"/__MACOSX"];
[fileManager removeItemAtPath:strpath error:nil];
NSFileManager *myFileManager=[NSFileManagerdefaultManager];
NSDirectoryEnumerator *myDirectoryEnumerator = [myFileManager enumeratorAtPath:unzipto];
//列举目录内容
while((unzipto=[myDirectoryEnumerator nextObject])!=nil)
{
NSLog(@"%@",unzipto);
//获取子文件夹路径
NSString *str_path = [str stringByAppendingFormat:@"/%@",unzipto];
if ([self isPathorFile:str_path]) {
NSLog(@"目录");
}else{
NSLog(@"文件");
}
}
[str release];
/**
*@brief判断一个路径是文件还是文件夹
*
*@param path 路径
*
*@return返回BOOL值
*/
-(BOOL)isPathorFile:(NSString *)path
{
BOOL isDir;
NSString *documentsDir = path;
if ([[NSFileManager defaultManager] fileExistsAtPath:documentsDir isDirectory:&isDir] && isDir) {
NSLog(@"directory");
isDir = YES;
}else{
NSLog(@"file");
isDir = NO;
}
return isDir;
}
Demo下载地址:http://download.csdn.net/detail/zgcrichard/6234705。
代码写解压zip文件的更多相关文章
- Android 解压zip文件你知道多少?
对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...
- Java 上传解压zip文件,并且解析文件里面的excel和图片
需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...
- 通过javascript在网页端解压zip文件并查看压缩包内容
WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说: 如果前端的代 ...
- Android 解压zip文件(支持中文)
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- (转载)C#压缩解压zip 文件
转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...
- Android 解压zip文件
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- java实现解压zip文件,(亲测可用)!!!!!!
项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...
- python用zipfile模块打包文件或是目录、解压zip文件实例
#!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...
- AIX解压ZIP文件
AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本 之前的版本 ...
随机推荐
- ZOJ 3483 简单if-else
提醒:答案要约分,不然会错! #include<iostream> #include<cstdio> #include<cstring> #include<a ...
- zoj3713 7Bit
意思是把一行字符串的长度按照找7位一个字节输出,如果长度能够存在7位里,字节的最高位置0,否则只输出7位并且输出字节的最高位置1,直到全部输出长度. 要注意的是有空串要输出00,其他按照16进制输出就 ...
- 演练5-4:Contoso大学校园管理系统4
在之前的教程中,我们已经完成了学校的数据模型.现在我们将读取和显示相关数据,请理解EF加载导航属性的方式. 一.Lazy.Eager.Explicit数据加载 使用EF为实体中的导航属性加载相关数据, ...
- Rfc2898DeriveBytes解密如何通过java实现
原文 Rfc2898DeriveBytes解密如何通过java实现 这个找了半天,还是不太懂,密码一点不懂,直接上来问了 Rfc2898DeriveBytes对应的是PBKDF2WithHmacSHA ...
- Codeforces 468D Tree
题目 给出一棵带边权的树,求一个排列\(p\),使得\(\sum_{i=1}^{n}{dis(i, p_i)}\)的值最大,其中\(dis(v, u)\)表示\(v\)到\(u\)的距离. 算法 这题 ...
- grunt 前端开发环境搭建
1.找管理员开通gitlab权限 2.下载并安装git工具 3.下载并安装nodejs 4.安装cnpm 5.安装kulor-cli cnpm install -g kulor-cli cnpm in ...
- Android TextView自己主动换行文字排版參差不齐的原因
今天项目没什么进展,公司后台出问题了.看了下刚刚学习Android时的笔记,发现TextView会自己主动换行,并且排版文字參差不齐.查了下资料,总结原因例如以下: 1.半角字符与全角字符混乱所致:这 ...
- 多图片/文件上传 - SwfUpload/PlUpload
<文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>
- 基于visual Studio2013解决C语言竞赛题之1022最大数最小数
题目 解决代码及点评 /************************************************************************/ ...
- POJ - 1006 Biorhythms 周期相遇 两个思路程序
Description Some people believe that there are three cycles in a person's life that start the day he ...