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裡面contribminizip目錄下的.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了