首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >7ZIP SDK共享

7ZIP SDK共享

作者头像
用户4148957
发布于 2022-06-14 00:55:34
发布于 2022-06-14 00:55:34
59400
代码可运行
举报
文章被收录于专栏:C/C++与音视频C/C++与音视频
运行总次数:0
代码可运行

      对于文件的压缩和解压是我们日常工作耳熟能详的操作,那么我们如何自己通过代码来实现各种文件的压缩和解压,本文是笔者整理和精炼的的7zipSDK,支持zip,rar,7zip,tar,xz等常见格式的压缩和解压,接口友好,demo简单,特意收藏,以备不时之需。

压缩例子如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include<string>
#include "7zpp.h"
#define DLL_PATH  _T("C:\\Program Files\\7-Zip\\7z.dll")
#define TESTCOMPRESSTESTFILE1  _T("TestFiles\\Readme.md")
#define TESTEXTRACTTESTFILE2    _T("TestFiles\\dir")
#define ARCHIVE_NAME1   _T("MyArchive")
using namespace std;
using namespace SevenZip;
void comprese_file(SevenZip::CompressionFormat::_Enum fmt)
{
    SevenZip::SevenZipLibrary lib;
    bool result = lib.Load(SevenZip::TString(DLL_PATH));

    // Make sure DLL loads
    if (!result)
    {
        printf("load dll is failed\n");
    }
    printf("CompressionFormat is %d\n", fmt);
    SevenZip::TString myArchive(ARCHIVE_NAME1);

    SevenZip::SevenZipCompressor compressor(lib, myArchive);
    compressor.SetCompressionFormat(fmt);
    compressor.SetPassword(_T("test"));
    bool addResult = compressor.AddFile(TESTCOMPRESSTESTFILE1);
    if (!result)
    {
        printf("AddFile is failed\n");
    }


    // add files by mask non recursive in folder where no files with this mask
    addResult = compressor.AddFiles(TESTEXTRACTTESTFILE2, _T("*.h"), false);
    if (!result)
    {
        printf("AddFile2 is failed\n");
    }

    addResult = compressor.AddFiles(TESTEXTRACTTESTFILE2, _T("*.h"), true);
    if (!result)
    {
        printf("AddFile3 is failed\n");
    }

    bool compressResult = compressor.DoCompress();
    if (!result)
    {
        printf("AddFile4 is failed\n");
    }

    getchar();
}
int main()
{
    std::cout << "Hello World!\n";
    comprese_file(SevenZip::CompressionFormat::SevenZip);
}

解压文件例子

例子如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include<string>
#include "7zpp.h"
#define DLL_PATH  _T("C:\\Program Files\\7-Zip\\7z.dll")
#define TESTEXTRACTTESTFILE1    _T("TestFiles\\dir.7z")
#define TESTEXTRACTTESTTMP    _T("TestFiles\\temp")
using namespace std;
using namespace SevenZip;
void Extration_file( SevenZip::CompressionFormat::_Enum fmt)
{
    SevenZip::SevenZipLibrary lib;
    bool result = lib.Load(SevenZip::TString(DLL_PATH));
    if (!result)
    {
        printf("load dll is failed\n");
        return;
    }
    printf("CompressionFormat is %d\n",fmt);
    SevenZip::TString myArchive(TESTEXTRACTTESTFILE1);
    SevenZip::TString myDest(TESTEXTRACTTESTTMP);


    //
    // Extract
    //
    SevenZip::SevenZipExtractor extractor(lib, myArchive);

    //
    // Try to detect compression format, num of items, and names
    //
    SevenZip::CompressionFormatEnum myCompressionFormat;

    // Read in all the metadata
    extractor.ReadInArchiveMetadata();

    // Pull the metadata locally
    myCompressionFormat = extractor.GetCompressionFormat();

    //
    //  Using callbacks
    //
    extractor.SetCompressionFormat(fmt);
    result = extractor.ExtractArchive(myDest, nullptr);
    if (!result)
    {
        printf("ExtractArchive is failed\n");
        return;
    }

}
int main()
{
    std::cout << "Hello World!\n";
    Extration_file(SevenZip::CompressionFormat::SevenZip);
    getchar();
}

以上只是文件压缩和解压的基本例子,该SDK还支持文件列表查看,内存数据压缩成文件等。更多更详细信息请关注公众号:AV_Chat,该SDK下载地址

https://download.csdn.net/download/fengliang191/13981776

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档