• 使用zlib库解压zip文件


    2013-3-13

    1.首先到zlib官网上去下载zlib库

    http://www.zlib.net/

    当前最新版是1.2.7

    要下编译好的: zlib127-dll.zip

    再下源码包:zlib127.zip  //主要是抠出里面zip文件操作的例子2.随便写个测试程序, 使用Qt搭建一个工程

    3.Qt中引用zlib库的dll文件目录

    #include "./Zlib/include/zip.h"
    #include "./Zlib/include/unzip.h"
    #pragma comment(lib, "./Zlib/lib/zdll.lib")

    4.把zlib127.zip里面contrib\minizip目录下的.c和.h源文件(除了minzip.c和minunz.c两个文件外)拷贝出来放到Qt工程目录下, Qt工程目录添加这些.c文件进来

    5.解压zip文件程序:

    unz_file_info64 FileInfo;
    unzFile zFile = unzOpen64("d:/biji.zip");
    if(NULL == zFile)
        qDebug() << "zero!";
    else
        qDebug() << "haha";
    
    unz_global_info64 gi;
    
    if (unzGetGlobalInfo64(zFile, &gi) != UNZ_OK)
    {
        qDebug() << "ho no";
    }
    
    int result;
    for (int i = 0; i < gi.number_entry; ++i)
    {
        char file[256] = {0};
        char ext[256] = {0};
    
        char com[1024] = {0};
        if (unzGetCurrentFileInfo64(zFile, &FileInfo,file,sizeof(file),ext,256,com,1024)!= UNZ_OK)
            qDebug() << "error";
        qDebug() << file << ":" << ext << ":" << com;
    
    
    
        if(!(FileInfo.external_fa & FILE_ATTRIBUTE_DIRECTORY)) //文件,否则为目录
    
        //打开文件
         result=unzOpenCurrentFile(zFile);/* 无密码 */
        result=unzOpenCurrentFilePassword(zFile,"szPassword"); /* 有密码 */
    
        char data[1024] = {0};
        int size;
        //读取内容
    
        QString path = QString("d:/zip/") + file;
        QFile f(path);
        f.open(QFile::WriteOnly);
        while(true) {
            size= unzReadCurrentFile(zFile,data,sizeof(data));
            if(size <= 0)
                break;
    
    //            QString str;
    //            str = QString::fromLocal8Bit(data, size);
            f.write(data, size);
        }
        f.close();
    
        //关闭当前文件
        unzCloseCurrentFile(zFile);
    
        //出错
        if(i < gi.number_entry - 1 && unzGoToNextFile(zFile) != UNZ_OK)
            qDebug() << "error2";
    }
    unzClose(zFile);

    ok了

  • 相关阅读:
    不变数组 NSArray
    【英雄会】微软题目:几个bing
    单例模式 Singleton
    【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法
    如何解决SQL Server数据库查询速度慢
    Linq 学习(1) Group & Join--网摘
    UMeng 友盟的用户数,启动数 等
    浏览器userAgent大全
    VBA 将 ANSI 转换为 UTF-8文件
    C# 中控件 WebBrowser 对 frameset/ iframe 操作和内容获取
  • 原文地址:https://www.cnblogs.com/jianc/p/2957974.html
Copyright © 2020-2023  润新知