cocos2dx zip文件加压

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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值