亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++Zip壓縮解壓縮示例(支持遞歸壓縮)

2020-01-26 15:41:34
字體:
來源:轉載
供稿:網友



第三方函數、頭文件、測試工程下載地址:http://pan.baidu.com/s/1gSfKo

復制代碼 代碼如下:

// 文件名: ZipFunction.h
#pragma once
#include "zip.h"
#include "unzip.h"

namespace ZipUtils
{
    // ------------------------------------------------------------------------------------------------------------------------
    // Summary:
    //   解壓zip文件到指定路徑, 并返回解壓文件路徑和文件名。
    // Parameters:
    //   lpszZipFullName   - 待解壓 zip壓縮包所在文件夾路徑和zip壓縮名稱; 如"D://00//1.zip"。
    //   szFilePathArr     - 保存的解壓后文件的文件名;如"1.jpg"。   
    //   lpszUnZipPath     - 解壓出來的文件 所存放位置的完整路徑; 如 “D://01”
    //                       此參數省略時,默認解壓到exe程序所在文件夾下。
    // Returns:
    //   解壓成功返回ZR_OK,解壓失敗返回錯誤碼。
    // ------------------------------------------------------------------------------------------------------------------------
    ZRESULT ExtractZipToDir(LPCTSTR lpszZipFullName, CStringArray& szFilePathArr, LPCTSTR lpszUnZipPath = NULL);

    // ------------------------------------------------------------------------------------------------------------------------
    // Summary:
    //   壓縮指定路徑下的文件,并保存壓縮包到指定路徑。
    // Parameters:
    //   lpszSrcPath        - 待壓縮文件所在的路徑; 如"D://00"。
    //   lpszDestPath       - 壓縮完成后,存放壓縮包的路徑。
    //                        此參數省略時,默認存放路徑為exe程序所在文件的路徑。
    //   lpszZipName        - 壓縮完成后,壓縮的名稱;如“MySkin.zip”。
    // Returns:
    //   壓縮成功返回ZR_OK,壓縮失敗返回錯誤碼。
    // ------------------------------------------------------------------------------------------------------------------------
    ZRESULT CompressDirToZip(LPCTSTR lpszSrcPath, LPCTSTR lpszZipName, LPCTSTR lpszDestPath = NULL);
}

復制代碼 代碼如下:

#include "stdafx.h"
#include "ZipFunction.h"
#include <io.h>

namespace ZipUtils
{
    // 全局變量
    int g_nCount = 0;

    ZRESULT ExtractZipToDir(LPCTSTR lpszZipFullName, CStringArray& szFilePathArr, LPCTSTR lpszUnZipPath)
    {
        TCHAR buffer[MAX_PATH] = {0};
        CString strUnZipPath = lpszUnZipPath;
        DWORD zResult = ZR_OK;

        if (!strUnZipPath.IsEmpty())
        {
            // 如果文件路徑不存在先創建,存在不做任何修改
            SHCreateDirectoryEx(NULL, lpszUnZipPath, NULL);
        }
        else
        {
            GetCurrentDirectory(MAX_PATH, (LPTSTR)&buffer);
            strUnZipPath = buffer;
            SHCreateDirectoryEx(NULL, strUnZipPath, NULL);
        }

        HZIP hz = OpenZip(lpszZipFullName, 0);
        ZIPENTRY ze;

        GetZipItem(hz, -1, &ze);
        int numitems = ze.index;

        for (int zi = 0; zi < numitems; zi++)
        {
            ZIPENTRY ze;
            GetZipItem(hz,zi,&ze);
            zResult = UnzipItem(hz, zi, (CString)strUnZipPath+_T("http://")+ze.name);  
            szFilePathArr.Add(ze.name);
            if (zResult != ZR_OK)
            {
#ifndef _UNICODE
                // 判斷文件是否存在
                if (_access(szFilePathArr[zi], 0))   
                {
                    // 文件不存在的時候
                    return zResult;
                }
#else
                if (_access((char *)(LPTSTR)(LPCTSTR)szFilePathArr[zi], 0))   
                {
                    // 文件不存在的時候
                    return zResult;
                }
#endif
            }
        }

        CloseZip(hz);
        return zResult;
    }

    ZRESULT DirToZip(LPCTSTR lpszSrcPath, LPCTSTR lpszZipName, HZIP& hz, LPCTSTR lpszDestPath)
    {
        static CString strFileName;
        g_nCount++;
        DWORD zResult = ZR_OK;
        TCHAR buffer[MAX_PATH] = {0};

        CString strDestPath = lpszDestPath;

        if (g_nCount == 1)
        {
            // 這里邊的只執行一次
            if (!strDestPath.IsEmpty())
            {
                // 如果解壓路徑文件夾不存在 先創建,存在 不做任何修改
                SHCreateDirectoryEx(NULL, lpszDestPath, NULL);
            }
            else
            {
                GetCurrentDirectory(MAX_PATH, (LPTSTR)&buffer);
                strDestPath = buffer;
                SHCreateDirectoryEx(NULL, strDestPath, NULL);
            }
            hz = CreateZip((CString)strDestPath+_T("http://")+(CString)lpszZipName, 0);
        }

        HANDLE file;
        WIN32_FIND_DATA fileData;
        file = FindFirstFile((CString)lpszSrcPath+_T("http://*.*"), &fileData);
        FindNextFile(file, &fileData);
        while (FindNextFile(file, &fileData))
        {
            // 如果是一個文件目錄
            if(fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if (strFileName.IsEmpty())
                {
                    ZipAddFolder(hz, fileData.cFileName);
                }
                else
                {
                    ZipAddFolder(hz, strFileName+_T("http://")+fileData.cFileName);
                }

                strFileName = fileData.cFileName;
                // 存在子文件夾 遞歸調用
                DirToZip((CString)lpszSrcPath+_T("http://")+ fileData.cFileName, lpszZipName, hz, lpszDestPath);
                strFileName.Empty();
            }
            else
            {
                CString strTempPath;
                strTempPath.Format(_T("%s//%s"), (CString)lpszSrcPath, fileData.cFileName);
                if (strFileName.IsEmpty())
                {
                    ZipAdd(hz, fileData.cFileName, strTempPath);
                }
                else
                {
                    ZipAdd(hz, strFileName+_T("http://")+fileData.cFileName, strTempPath);
                }

                if (zResult != ZR_OK)
                {
                    return zResult;
                }
            }
        }

        return zResult;
    }

    ZRESULT CompressDirToZip(LPCTSTR lpszSrcPath, LPCTSTR lpszZipName, LPCTSTR lpszDestPath)
    {
        HZIP hz;
        DWORD zResult = ZR_OK;
        zResult = DirToZip(lpszSrcPath, lpszZipName,hz, lpszDestPath);
        if(zResult == ZR_OK)
        {
            CloseZip(hz);
        }
        g_nCount = 0;

        return zResult;
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www国产亚洲精品久久网站| 精品国产精品自拍| 最近免费中文字幕视频2019| 97香蕉久久夜色精品国产| 亚洲一区二区三区四区视频| 91亚洲精品久久久| 日韩视频在线免费观看| 欧美性受xxx| 日韩中文视频免费在线观看| 国产精品无码专区在线观看| 欧美精品久久久久久久免费观看| 中文字幕av一区二区| 欧美黄色片免费观看| 一个色综合导航| 国产在线精品成人一区二区三区| 亚洲综合精品一区二区| 国自在线精品视频| 日韩免费av一区二区| 岛国视频午夜一区免费在线观看| 九九热这里只有精品6| 亚洲aⅴ男人的天堂在线观看| 亚洲变态欧美另类捆绑| 亚洲成人黄色在线| 高潮白浆女日韩av免费看| www.99久久热国产日韩欧美.com| 亚洲色图av在线| 日韩中文字幕视频在线观看| 国产午夜精品免费一区二区三区| 国产成人午夜视频网址| 欧美性猛交xxxx黑人| 精品久久久久久久久中文字幕| 欧美放荡办公室videos4k| 亚洲国产第一页| 国产精品久久久久久久久免费看| 亚洲美女精品久久| 日韩视频免费大全中文字幕| 国产精品va在线播放我和闺蜜| 成人xvideos免费视频| 免费不卡在线观看av| 日韩在线观看免费全集电视剧网站| 日韩av免费网站| 日韩在线观看免费全| 久久国产精品首页| 亚洲国产成人在线播放| 成人国内精品久久久久一区| 91精品久久久久久久久久| 国产精品黄色影片导航在线观看| 亚洲国产精品成人一区二区| 亚洲va欧美va国产综合剧情| 日韩美女写真福利在线观看| 日韩第一页在线| 午夜精品久久久久久久久久久久久| xvideos亚洲人网站| 日韩精品在线私人| 2019中文字幕免费视频| 欧美激情一区二区三区在线视频观看| 亚洲人在线视频| 97福利一区二区| 久久影院模特热| 欧美成人剧情片在线观看| 欧美一级淫片aaaaaaa视频| 揄拍成人国产精品视频| 亚洲人成在线观看网站高清| 美女撒尿一区二区三区| 亚洲最大成人网色| 久久久国产精品视频| 亚洲精品福利资源站| 一区二区成人av| 欧美性xxxxx极品| 国产精品免费久久久| 一区二区三区视频观看| 欧美黄色性视频| 久热精品视频在线| 亚洲一区美女视频在线观看免费| 精品一区二区电影| 成人在线视频福利| 性欧美在线看片a免费观看| 色诱女教师一区二区三区| 理论片在线不卡免费观看| 国产精品高潮在线| 亚洲精品久久久久国产| 色综合伊人色综合网| 伊人久久大香线蕉av一区二区| 91久久精品美女高潮| 亚洲视频999| 久久精品国产清自在天天线| 国产91精品久久久久| 久久av红桃一区二区小说| 久久久噜噜噜久噜久久| 国产精品免费一区二区三区都可以| 91在线免费观看网站| 国产精品入口免费视频一| 亚洲国产精品成人精品| 亚洲欧美日韩第一区| 久久成人综合视频| 亚洲欧美日韩视频一区| 亚洲精品720p| 久久精品青青大伊人av| 久久久久久久999| 久久亚洲精品国产亚洲老地址| 神马久久桃色视频| 欧美电影在线观看| 美女精品久久久| 亚洲人成电影在线播放| 国产精品96久久久久久又黄又硬| 亚洲第一精品电影| 国产亚洲精品成人av久久ww| 国产精品久久久久aaaa九色| 中文字幕久久精品| 亚洲国产精品成人av| 欧美xxxx做受欧美.88| 精品高清美女精品国产区| 欧美高清videos高潮hd| 欧美日韩成人免费| 国产精品久久久久久久久久99| 色先锋资源久久综合5566| 国产一区二区动漫| 中文字幕欧美精品日韩中文字幕| 日韩免费视频在线观看| 欧美精品在线观看| 91免费国产网站| 亚洲久久久久久久久久| 1769国内精品视频在线播放| 91精品久久久久久久久久久久久| 日本精品一区二区三区在线播放视频| 国产suv精品一区二区| 欧美性猛交99久久久久99按摩| 亚洲福利视频久久| 日韩高清a**址| 国产精品九九久久久久久久| 亚洲欧美日韩视频一区| 日韩中文字幕国产精品| 日韩国产欧美精品一区二区三区| 欧美一区二区三区精品电影| 国产成人在线播放| 欧美在线视频免费| 97视频在线观看播放| 久久综合久久美利坚合众国| 午夜精品一区二区三区在线视| 国产精品极品美女粉嫩高清在线| 欧美高清激情视频| 精品久久久久久久久久国产| 人体精品一二三区| 亚洲午夜久久久久久久| 国产视频精品在线| 国产精国产精品| 欧美老肥婆性猛交视频| 搡老女人一区二区三区视频tv| 日韩电影在线观看永久视频免费网站| 国产成人精品日本亚洲专区61| 久久久久久久久久久人体| 国产午夜精品理论片a级探花| 97精品免费视频| 国产91ⅴ在线精品免费观看| 91av免费观看91av精品在线| 国产精品久久中文| 亚洲最大在线视频| 国产精品电影观看| 成人a级免费视频| www.欧美三级电影.com| 丝袜美腿亚洲一区二区| 中文日韩在线视频| 欧美另类在线观看| 日本精品中文字幕|