2013-3-13
1.首先到zlib官網上去下載zlib庫
當前最新版是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了