C++ 使用老牌库xzip & unzip对文件进行压缩解压
原文链接
https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
https://www.codeproject.com/Articles/4135/XZip-and-XUnzip-Add-zip-and-or-unzip-to-your-app-w
完全开源随便玩耍的一个老库库,
本文涉及IDE VS2013 vc++6.0
无需调用静态库或者动态库,直接包含即可使用 MFC 非MFC工程都可以没有限制,为了方便自身使用涉及这宝宝
自己写个导出库使用,顺便作此文。
--------------------------------------------------------------------------------------------------------------------------------------------------
VS2013/VC++6.0(后面同称IDE)
取消预编译处理
VC- 工程- C/C++ -预编译处理-不使用预补偿页眉
VS-工程-C/C++-找到不使用预编译处理即可
还有一点比较重要的这三者的顺序,如果不注意就报错了
#include <winnt.h>
#include "XUnzip.h"
#include "XZip.h"
好了配置好IDE然后就可以随便玩耍了,
这个库里面有
HZIP CreateZip(void *z, unsigned int len, DWORD flags);//创建一个空的zip
Z:某路径下压缩文件名,无路径默认当前工作目录
len:压缩内存的大小,其他情况为0
flags:压缩文件使用标志 ZIP_FILENAME
成功返回非0
ZipAdd(HZIP hz, const TCHAR *dstzn, void *src, unsigned int len, DWORD flags);//将一个文件添加进行压缩
hz:创建或者打开zip的文件指针
dstzn:在zip文件中显示的文件名
src:对于(ZIP_FILENAME 压缩)的情况,这个是需要添加到压缩包的文件的名字,需要给出具体的路径,若没有绝对路径那么默认当前工作目录下
len:对于压缩内存的内容(ZIP_MEMORY)这是压缩内存的大小,其他情况,这个应该是0
flags:如果是压缩文件,这个标志是ZIP_FILENAME
returns:ZRESULT 成功为ZR_OK
HZIP OpenZip(void *z, unsigned int len, DWORD flags);打开一个已经存在的压缩文件
z:压缩文件名 【相对路径一般为当前工作目录】
len:对于压缩内存的内容(ZIP_MEMORY)这是压缩内存的大小,其他情况,这个应该是0
flags:如果是压缩文件,这个标志是ZIP_FILENAME
returns: HZIP 非0为成功,0这是失败
ZRESULT GetZipItemA(HZIP hz,int index,ZIPENTRY * ze); //获取压缩文件里的信息
ZRESULT GetZipItemW(HZIP hz,int index,ZIPENTRYW * ze);//获取压缩文件里的信息
hz:创建/打开zip文件指针
index:zip文件里的元素下标(0开始)
ze:一个指向ZIPENTRY结构体指针(ANSI)或者ZIPENTRYW(Unicode宽字节)
returns:ZRESULT 成功为ZR_OK
ZRESULT FindZipItemA(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRY *ze); //在压缩文件里查找某元素
ZRESULT FindZipItemW(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRYW *ze);//在压缩文件里查找某元素
hz:创建/打开zip文件指针
name:需要在zip文件中查找的元素名字
ic:值为TRUE大小写不敏感
index:返回要查找元素的下标,否则是-1,
ze:一个指向ZIPENTRY结构体指针(ANSI)或者ZIPENTRYW(Unicode宽字节)
returns:ZRESULT 成功为ZR_OK
ZRESULT UnzipItem(HZIP hz, int index, void *dst, unsigned int len, DWORD flags) //解压压缩文件里面的某元素
hz:创建/打开的zip文件指针
index:要解压的元素下标
dst:解压出来的文件名字
len:对于压缩内容(ZIP_MEMORY)这个值是压缩内存的大小,其他情况,这个值应该是0
flags:如果是压缩文件,那么使用这个标志ZIP_FILENAME
returns:ZRESULT 成功返回ZR_OK
ZRESULT CloseZipZ(HZIP hz); //关闭压缩文件
hz:要操作的zip文件指针
returns:ZRESULT 成功返回ZR_OK
注意压缩文件的路径,即可随心所欲压缩。
C++ 使用老牌库xzip & unzip对文件进行压缩解压的更多相关文章
- Linux_文件打包,压缩,解压
一.压缩命令 文件格式:*.gz 命令:gzip 文件名 (ps:不能压缩目录,切压缩后不保留原文件) 压缩前 -rw-r--r--. 1 root root 315 Sep 6 21:03 df.t ...
- 【.Net Core】ZipFile类--文件的压缩解压
NuGet引用官网自带的System.IO.Compression.ZipFile; var filename = "测试压缩解压文件"; var path = Directory ...
- python对文件的压缩解压
python自带的zipfile的模块支持对文件的压缩和解压操作 zipfilp.ZipFile 表示创建一个zip对象 zipfile.ZipFile(file[, mode[, compressi ...
- 使用PHP对文件进行压缩解压(zip)
使用虚拟主机进行文件上传时最常用的工具莫过于FTP了,但是使用FTP有一个弊端就是文件太多时上传或下载速度比较慢,如果上传时将文件打包,上传后在 空间解压缩,同样下载前将文件打包压缩以压缩包的形式下载 ...
- 使用C#压缩解压rar和zip格式文件
为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...
- C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)
我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...
- 分享一个ASP.NET 文件压缩解压类 C#
需要引用一个ICSharpCode.SharpZipLib.dll using System; using System.Collections.Generic; using System.Linq; ...
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2
命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...
- linux驱动系列之文件压缩解压小节(转)
转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...
随机推荐
- Python 语音识别
调用科大讯飞语音听写,使用Python实现语音识别,将实时语音转换为文字. 参考这篇博客实现的录音,首先在官网下载了关于语音听写的SDK,然后在文件夹内新建了两个.py文件,分别是get_audio. ...
- pipelines和重定向命令
pipelines: command1 | command2 例如,ls -l /usr/bin | less,将输出结果作为 less 命令的输入结果,在standard output 中显示出来. ...
- 【leetcode】1012. Complement of Base 10 Integer
题目如下: Every non-negative integer N has a binary representation. For example, 5 can be represented a ...
- java生成快递单并调用打印机打印
生成快递单过程中需要生成条形码,生成条形码可参考:https://www.cnblogs.com/linbky/p/12091248.html 下面这段代码生成的快递单是完全符合京东快递的10 x 1 ...
- scipy与sklearn下载与安装
一.scipy下载与安装 scipy下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv提供各种包whl文件 下载之后放到Scripts文件中 ...
- [CSP-S模拟测试]:联(小清新线段树)
题目描述 由于出题人懒所以没有背景.一个无限长的$01$序列,初始全为$0$,每次选择一个区间$[l,r]$进行操作,有三种操作:$\bullet 1\ l\ r$将$[l,r]$中所有元素变成$1$ ...
- 转载:IDEA lombok插件的安装和使用
转载自:https://jingyan.baidu.com/article/0a52e3f4e53ca1bf63ed725c.html lombok插件的安装 1 首先我们需要安装IntelliJ ...
- php面试专题---2、常量及数据类型考点
php面试专题---2.常量及数据类型考点 一.总结 一句话总结: 变量为null和变量判断为false的情况需要仔细注意下 1.PHP中字符串可以使用哪三种定义方法以及各自的区别是什么? 单引号:不 ...
- PHP curl get post请求
POST请求: public function postUrl($url, $postData = false, $header = false) { $ch = curl_init($url); c ...
- js另存为、打印、属性、加入收藏、关闭等代码
js打开代码 <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开> &l ...