场景:
1. 解压文件一般用在下载了一个zip文件之后解压,或者分析某个文件须要解压的操作上.
2. 解压文件,特别是解压带目录的zip文件往往系统没有提供这类Win32 API,当然C#自带库能解压, 当然这里仅仅讨论C/C++, 像C#和Java这样的开挂的标准库不在考虑范围内.
3. zlib解压文件的使用样例在 contribminizip 样例里. 这里基本是直接提取miniunz.c 的代码进行封装解压就可以, 仅仅是改了下支持中文路径.
主文件 zip_util.cpp
#include "stdafx.h" #include "zip_util.h" #include "unzip.h" #include <iostream> #include <string> #include <algorithm> #include <stdlib.h> #include <zlib.h> #include "ioapi.h" #include "iowin32.h" #include "wrap_object.h" using namespace std; #define CASESENSITIVITY (0) #define WRITEBUFFERSIZE (8192) #define MAXFILENAME (256) unzFile ZipUtil::UnzOpen64(const wchar_t* path) { zlib_filefunc64_def ffunc; fill_win32_filefunc64W(&ffunc); unzFile zf = unzOpen2_64(path,&ffunc); return zf; } char* ConvertUnicodeToUtf8(const wchar_t* unicode) { if(unicode == NULL) { return strdup("