zoukankan      html  css  js  c++  java
  • 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

    注意压缩文件的路径,即可随心所欲压缩。

  • 相关阅读:
    卡牌分组
    css字体样式+文本样式
    jQuery---on注册事件的2种方式
    css3神奇的背景控制属性+使用颜色过渡实现漂亮的渐变效果
    js Dom为页面中的元素绑定键盘或鼠标事件
    ES6中Set和WeakSet
    Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别
    JS数据类型和堆栈+变量比较和值的复制+参数传递和类型检测
    复习node中加载静态资源--用express+esj
    种花问题
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/8232486.html
Copyright © 2011-2022 走看看