2025年6月6日 星期五 乙巳(蛇)年 三月初十 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

7ZIP SDK共享

时间:08-17来源:作者:点击数:43

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

压缩例子如下:

  • #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);
  • }

解压文件例子

例子如下:

  • #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还支持文件列表查看,内存数据压缩成文件等。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门