原文链接

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对文件进行压缩解压的更多相关文章

  1. Linux_文件打包,压缩,解压

    一.压缩命令 文件格式:*.gz 命令:gzip 文件名 (ps:不能压缩目录,切压缩后不保留原文件) 压缩前 -rw-r--r--. 1 root root 315 Sep 6 21:03 df.t ...

  2. 【.Net Core】ZipFile类--文件的压缩解压

    NuGet引用官网自带的System.IO.Compression.ZipFile; var filename = "测试压缩解压文件"; var path = Directory ...

  3. python对文件的压缩解压

    python自带的zipfile的模块支持对文件的压缩和解压操作 zipfilp.ZipFile 表示创建一个zip对象 zipfile.ZipFile(file[, mode[, compressi ...

  4. 使用PHP对文件进行压缩解压(zip)

    使用虚拟主机进行文件上传时最常用的工具莫过于FTP了,但是使用FTP有一个弊端就是文件太多时上传或下载速度比较慢,如果上传时将文件打包,上传后在 空间解压缩,同样下载前将文件打包压缩以压缩包的形式下载 ...

  5. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  6. C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

    我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...

  7. 分享一个ASP.NET 文件压缩解压类 C#

    需要引用一个ICSharpCode.SharpZipLib.dll using System; using System.Collections.Generic; using System.Linq; ...

  8. linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2

    命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...

  9. linux驱动系列之文件压缩解压小节(转)

    转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...

随机推荐

  1. 关系型数据库---MySQL---行锁

    1.概述 1.1 InnoDB存储引擎  提供了行锁: 1.2 案例 CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `n ...

  2. 向指定URL 发送POST请求的方法

    java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...

  3. 注解@requestBody自动封装复杂对象 (成功,自己的例子封装的不是一个复杂对象,只是一个简单的User对象,将jsp页面的name转成json字符串,再用JSON.stringify()传参就行了)

    注意:ajax向后台传值的时候,必须加上contentType:"application/json"; springmvc的注解@requestBody可以通过页面提交json来自 ...

  4. UiAutomator、UiAutomator2、Bootstrap的关系

    很多同学经过一段时间的学习之后都明白了Appium的基本原理,但是越学习到后面发现出现的很多陌生名词无法弄清楚其具体作用,今天这篇文章的目的就是为了让大家来弄懂三个高频名词:UiAutomator.U ...

  5. php strcasecmp()函数 语法

    php strcasecmp()函数 语法 作用:比较两个字符串(不区分大小写)直线电机驱动器 语法:strcasecmp(string1,string2) 参数: 参数 描述 string1 必须, ...

  6. CSU 1503: 点到圆弧的距离(计算几何)

    题目描述 输入一个点 P 和一条圆弧(圆周的一部分),你的任务是计算 P 到圆弧的最短距离.换句话 说,你需要在圆弧上找一个点,到 P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通 ...

  7. Win7、Win10、Linux局域网文件共享

    目录 1.WIN7系统局域网文件共享 2.WIN10系统局域网文件共享 3.Linux 局域网文件共享 WIN7系统局域网文件共享 步骤一: 打开网络和共享中心----更改高级共享设置 步骤二: 选择 ...

  8. JS基础入门篇(四)—this的使用,模拟单选框,选项卡和复选框

    1.this的使用 this js中的关键字 js内部已经定义好了,可以不声明 直接使用 this的指向问题 1. 在函数外部使用 this指向的是window 2. 在函数内部使用 有名函数 直接调 ...

  9. 2018-2019-2 网络对抗技术 20165206 Exp 9 Web安全基础

    - 2018-2019-2 网络对抗技术 20165206 Exp 9 Web安全基础 - 实验任务 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,C ...

  10. SharePoint 2013中PerformancePoint仪表板设计器连接Analysis Services 2012的问题

    在SharePoint 2013的PerformancePoint仪表板设计器在创建链接到AnalysisServices 2012的数据链接的时候,数据库列表无法获取服务器上的数据库.这个问题挺让人 ...