C++ 实现zip解压缩
来源:互联网 发布:什么软件可以男变女 编辑:程序博客网 时间:2024/06/01 15:05
利用第三方 XUnzip 封装自己的解压函数。
XUnzip和封装的函数在 【 下载处:】 点击此处文字开始下载
自己封装函数好像MFC里边使用没有问题。
头文件名称MyUnZip.h:
/* 防止多次包含 */#ifndef MYUNZIP_H_#define MYUNZIP_H_#include "XUnzip.h"#include <afxwin.h>#include <vector>#ifdef _UNICODE#define MyUnZip MyUnZipW/* UNICODE版本 */std::vector<CString> & MyUnZipW (CString szPathAndFileName, CString szUnZipPath = _T(""));#else#define MyUnZip MyUnZipA/* ANSCII版本 */std::vector<CString> & MyUnZipA (CString szPathAndFileName, CString szUnZipPath = "");#endif/******************************************************************|--函数功能: |-- 解压zip压缩包到指定路径|--|--输入参数:|-- szPathAndFileName: 待解压 zip压缩包所在文件夹路径和zip压缩名称; 如"D://00//1.zip"|-- szUnZipPath: 解压出来的文件 所存放的问价完整路径; 如 “D://01”|-- 此参数省略时,默认解压到exe程序所在文件夹下的 Skin文件|--|--返回值:|-- 解压出来所有文件的完整路径******************************************************************/#endif
#include "stdafx.h"#include "MyUnZip.h"std::vector<CString> & MyUnZipW (CString szPathAndFileName, CString szUnZipPath){static std::vector<CString> szFilePath;#ifdef _UNICODEWCHAR buffer[248];if(szUnZipPath != L""){/* 如果文件路径不存在 先创建,存在 不做任何修改 */SHCreateDirectoryEx(NULL, szUnZipPath, NULL);}else{GetCurrentDirectory(248, (LPWSTR)&buffer);szUnZipPath = buffer;szUnZipPath += L"\\Skin";SHCreateDirectoryEx(NULL, szUnZipPath, NULL);}HZIP hz=OpenZip( (void*)(LPTSTR)(LPCTSTR)szPathAndFileName, 0, ZIP_FILENAME);ZIPENTRYW ze; GetZipItem(hz, -1, &ze); int numitems=ze.index;for (int zi=0; zi<numitems; zi++){ ZIPENTRYW ze; GetZipItem(hz,zi,&ze); UnzipItem(hz, zi, (void*)(LPTSTR)(LPCTSTR)(szUnZipPath+L"\\"+ze.name), 0,ZIP_FILENAME); szFilePath.push_back(szUnZipPath+L"\\"+ze.name);}CloseZip(hz);#endifreturn szFilePath;}std::vector<CString> & MyUnZipA (CString szPathAndFileName, CString szUnZipPath){static std::vector<CString> szFilePath;#ifndef _UNICODEchar buffer[248];if(szUnZipPath != ""){/* 如果文件路径不存在 先创建,存在 不做任何修改 */SHCreateDirectoryEx(NULL, szUnZipPath, NULL);}else{GetCurrentDirectory(248, (LPSTR)&buffer);szUnZipPath = buffer;szUnZipPath += "\\Skin";SHCreateDirectoryEx(NULL, szUnZipPath, NULL);}HZIP hz=OpenZip( (void*)(LPTSTR)(LPCTSTR)szPathAndFileName, 0, ZIP_FILENAME);ZIPENTRY ze; GetZipItem(hz, -1, &ze); int numitems=ze.index;for (int zi=0; zi<numitems; zi++){ ZIPENTRY ze; GetZipItem(hz,zi,&ze); UnzipItem(hz, zi, (void*)(LPTSTR)(LPCTSTR)(szUnZipPath+"\\"+ze.name), 0,ZIP_FILENAME); szFilePath.push_back(szUnZipPath+"\\"+ze.name);}CloseZip(hz);#endifreturn szFilePath;}
- C++ 实现zip解压缩
- Java实现zip压缩/解压缩
- Android解压缩zip的实现
- Java实现zip压缩/解压缩
- java实现zip压缩/解压缩
- Android上实现zip解压缩
- Java实现 zip压缩/解压缩
- 使用Objective-C解压缩ZIP文件教程
- 使用Objective-C解压缩ZIP文件教程
- 使用Objective-C解压缩ZIP文件教程
- c#zip压缩解压缩全解
- 利用Java实现zip压缩/解压缩
- 利用Java实现zip压缩/解压缩
- 利用Java实现zip压缩解压缩
- 在内存中实现zip解压缩
- 利用Java实现zip压缩/解压缩
- 利用Java实现zip压缩/解压缩
- 利用Java实现zip压缩/解压缩
- 云管理之虚拟化-Xen简介
- 棋类游戏
- 黑马程序员_面向对象学习总结(二)
- Mysql数据库操作常用命令
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
- C++ 实现zip解压缩
- vim 命令
- 解决Ubuntu升级12.10后无法编码Android源码问题
- Eclipse快捷键 10个最有用的快捷键
- 数组与链表
- 添加类库及ASIHTTPREQUEST简介
- jquery文档操作
- Chrome多进程调试
- Thrift之TProcess类体系原理及源码详细解析