博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d-x遍历zip某个目录(可用于android中apk包的文件访问)
阅读量:6588 次
发布时间:2019-06-24

本文共 1482 字,大约阅读时间需要 4 分钟。

利用cocos2d-x里封装的unZip进行遍历文件,取出每一个文件

1 vector
ToolUtils::getFiles( const char* zipFile, const char* floder ) 2 { 3 vector
files; 4 unsigned char * pBuffer = NULL; 5 unzFile pFile = NULL; 6 string rejustFloder(floder);     //floder必须以/结尾 7 if(rejustFloder.find_last_not_of("/")) { 8 rejustFloder = rejustFloder + "/"; 9 floder = rejustFloder.c_str();10 }11 do 12 {13 CC_BREAK_IF(!zipFile || !floder);14 CC_BREAK_IF(strlen(zipFile) == 0);15 16 pFile = unzOpen(zipFile);17 CC_BREAK_IF(!pFile);18 19 int nRet = unzLocateFile(pFile, floder, 1);20 CC_BREAK_IF(UNZ_OK != nRet);21 22 while (unzGoToNextFile(pFile) == UNZ_OK)23 {24 char szFilePathA[260];25 unz_file_info FileInfo;26 nRet = unzGetCurrentFileInfo(pFile, &FileInfo, szFilePathA, sizeof(szFilePathA), NULL, 0, NULL, 0);27 CC_BREAK_IF(UNZ_OK != nRet);28 string path(szFilePathA); //最后一个为/为目录过滤掉,且开头必须以文件开头29 if(path[path.size() - 1] != '/' && path.find(floder) == 0) {30 files.insert(files.begin(), string(szFilePathA));31 }32 }33 } while (0);34 35 if (pFile)36 {37 unzClose(pFile);38 }39 40 return files;41 }

这样我们zipFile就是某一个zip,在android平台上的就是getApkPath(),floder就是取zip里的相对路径。

 

转载于:https://www.cnblogs.com/tickdream/archive/2013/05/25/3099430.html

你可能感兴趣的文章
SQL编程篇 (二) 定义与流程控制
查看>>
using与命名空间
查看>>
画布canvas作为body的背景
查看>>
Java环境变量配置
查看>>
BZOJ4032 [HEOI2015]最短不公共子串
查看>>
div中的相对定位与绝对定位(转)
查看>>
PHP 根据IP地址获取所在城市
查看>>
阅读演出信息
查看>>
BZOJ 1008: [HNOI2008]越狱
查看>>
远程连接powershell
查看>>
集成Struts2+Spring+Hibernate_两种方案
查看>>
CentOS 6.5下的lamp环境rsyslog+MySQL+loganalyzer实现日志集中分析管理
查看>>
使用fiddler模拟重复请求接口
查看>>
第八周
查看>>
Python 9 Redis
查看>>
Linux Shell编程
查看>>
福大软工1816 · 第六次作业 - 团队选题报告
查看>>
【node.js】mongodb<二>
查看>>
Spring定时器Quartz的用法
查看>>
ubuntu下打开终端插件
查看>>