最近项目中服务器方返回了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文件的更多相关文章

  1. Android 解压zip文件你知道多少?

    对于Android常用的压缩格式ZIP,你了解多少? Android的有两种解压ZIP的方法,你知道吗? ZipFile和ZipInputStream的解压效率,你对比过吗? 带着以上问题,现在就开始 ...

  2. Java 上传解压zip文件,并且解析文件里面的excel和图片

    需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...

  3. 通过javascript在网页端解压zip文件并查看压缩包内容

    WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代 ...

  4. Android 解压zip文件(支持中文)

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  5. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  6. Android 解压zip文件

    过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...

  7. java实现解压zip文件,(亲测可用)!!!!!!

    项目结构: Util.java内容: package com.cfets.demo; import java.io.File; import java.io.FileOutputStream; imp ...

  8. python用zipfile模块打包文件或是目录、解压zip文件实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...

  9. AIX解压ZIP文件

    AIX系统自身是没有解压ZIP文件的,但在AIX安装oracle数据库服务器的话,在$ORACLE_HOME/bin路径下方却有unzip命令,可以解压ZIP文件. 一.shell脚本   之前的版本 ...

随机推荐

  1. 更换Winform 皮肤(下)----完全GDI+绘制

    skin皮肤和DLL程序及文件:下载 链接:http://www.cnblogs.com/DebugLZQ/archive/2013/04/15/3021659.html

  2. GridView控件-01-[简单的数据显示]

    GridView绑定数据分为两种,一种是多值绑定,另一种是字段绑定. 多值绑定(直接绑定到数据源就行,不需要使用字段): 前台代码: <asp:GridView ID="GridVie ...

  3. BZOJ 2073: [POI2004]PRZ( 状压dp )

    早上这道题没调完就去玩NOI网络同步赛了.... 状压dp , dp( s ) 表示 s 状态下所用的最短时间 , 转移就直接暴力枚举子集 . 可以先预处理出每个状态下的重量和时间的信息 . 复杂度是 ...

  4. 转载python并行运算实例

    Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不错,但却过于细节.这些资料讲的都是虎 ...

  5. WebStorm 7.0 注册码

    User Name: EMBRACE License Key:===== LICENSE BEGIN =====24718-1204201000001h6wzKLpfo3gmjJ8xoTPw5mQvY ...

  6. Bootstrap技术: 如何给nav导航组件的tab页增加关闭按钮以及动态的添加和关闭tab页

    先给出示例html代码 <div> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tab ...

  7. Mnesia基本用法

    查看表结构 查看mnesia表的结构: mnesia:info(). 查看此表的基本信息: mnesia:table_info(<tableName>, all). Mnesia初使化 m ...

  8. Java集合框架Collection

    转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...

  9. Ch03 视图基础

    3.1  视图简介 3.1.1  选择待渲染视图 3.1.2  重写视图名 3.2  给视图传递数据 3.2.1  ViewDataDictionary 3.2.2  ViewBag 3.2.3  带 ...

  10. QString与中文,QString与std::wstring的相互转换(使用fromStdWString和u8关键字)

    Qt版本:5.5.1 Qt的QString功能丰富,对非英语语言的支持也不是问题,但支持得不够直接.例如,像 ? 1 QString str("死亡使者赛维"); 这样直接用带中文 ...