cocos2dx zip文件加压
2013-11-27 13:49
225 查看
bool zipfile_uncompress(const std::string &filename)
{
//打开压缩文件
int npos = filename.find_last_of("/");
if(npos == std::string::npos)
{
return false;
}
std::string storePath = filename.substr(0,npos + 1);
std::string path = cocos2d::CCFileUtils::sharedFileUtils()->getWritablePath() + filename;
unzFile uzf = cocos2d::unzOpen(path.c_str());
if(uzf == NULL)
{
return false;
}
cocos2d::unz_file_info fileInfo;
char szFileName[260] = {0};
int uzRv = cocos2d::unzGoToFirstFile(uzf);
while(uzRv == UNZ_OK)
{
if(cocos2d::unzGetCurrentFileInfo(uzf,&fileInfo,szFileName,sizeof(szFileName),NULL,0,NULL,0) == UNZ_OK)
{
if(cocos2d::unzOpenCurrentFile(uzf) != UNZ_OK)
{
break;
}
//读压缩包内的文件
void* chBuf = (char*)malloc(fileInfo.uncompressed_size + 1);
cocos2d::unzReadCurrentFile(uzf, chBuf, fileInfo.uncompressed_size);
path.clear();
path.append(cocos2d::CCFileUtils::sharedFileUtils()->getWritablePath());
path.append(storePath);
path.append(szFileName);
FILE * file = fopen(path.c_str(),"wb+");
if(file)
{
fwrite(chBuf,1,fileInfo.uncompressed_size,file);
}
fclose(file);
free(chBuf);
//关闭压缩包内文件句柄
if(cocos2d::unzCloseCurrentFile(uzf) != UNZ_OK)
{
break;
}
//枚举压缩包内下一个文件
uzRv = cocos2d::unzGoToNextFile(uzf);
}
else
{
break;
}
}
return true;
}
{
//打开压缩文件
int npos = filename.find_last_of("/");
if(npos == std::string::npos)
{
return false;
}
std::string storePath = filename.substr(0,npos + 1);
std::string path = cocos2d::CCFileUtils::sharedFileUtils()->getWritablePath() + filename;
unzFile uzf = cocos2d::unzOpen(path.c_str());
if(uzf == NULL)
{
return false;
}
cocos2d::unz_file_info fileInfo;
char szFileName[260] = {0};
int uzRv = cocos2d::unzGoToFirstFile(uzf);
while(uzRv == UNZ_OK)
{
if(cocos2d::unzGetCurrentFileInfo(uzf,&fileInfo,szFileName,sizeof(szFileName),NULL,0,NULL,0) == UNZ_OK)
{
if(cocos2d::unzOpenCurrentFile(uzf) != UNZ_OK)
{
break;
}
//读压缩包内的文件
void* chBuf = (char*)malloc(fileInfo.uncompressed_size + 1);
cocos2d::unzReadCurrentFile(uzf, chBuf, fileInfo.uncompressed_size);
path.clear();
path.append(cocos2d::CCFileUtils::sharedFileUtils()->getWritablePath());
path.append(storePath);
path.append(szFileName);
FILE * file = fopen(path.c_str(),"wb+");
if(file)
{
fwrite(chBuf,1,fileInfo.uncompressed_size,file);
}
fclose(file);
free(chBuf);
//关闭压缩包内文件句柄
if(cocos2d::unzCloseCurrentFile(uzf) != UNZ_OK)
{
break;
}
//枚举压缩包内下一个文件
uzRv = cocos2d::unzGoToNextFile(uzf);
}
else
{
break;
}
}
return true;
}
相关文章推荐
- cocos2dx 3.10 读取加密压缩ZIP文件
- cocos2dx 3.10 读取加密压缩ZIP文件
- Android加压和解压zip文件
- Cocos2dx-Android初体验
- cocos2dx 3.x 实现 A星(A*)(A-star)算法自动寻路(一)
- COCOS2DX WIN32 版本的CPU占用25%改良策略
- cocos2dx lua让print 在andriod 输出log的方法
- googleTest 与 cocos2dx 3.0
- [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--敌人(一)
- 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
- Java处理Zip文件
- Android cocos2dx游戏开发——示例程序HelloCpp源码分析
- cocos2dx-3.2(35) ClippingNode 遮罩
- vs中cocos2dx项目打包成apk的过程
- cocos2dx 3.x中ActionTimeLine无法使用setLastFrameCallFunc的解决方案
- cocos2dx+lua的环境搞起~~~
- cocos2dx播放音乐
- cocos2dx 学校网站个人收集
- Python压缩解压缩zip文件及破解zip文件密码的方法
- cocos2dx 2.1.4 shader解析3 - cocos2dx自带的shader分析