C++ Builder压缩、解压缩文件

第一种方法:

用ZLib库里的TZCompressionStream、TZDecompressionStream,缺点是只能对单个文件进行压缩、压缩后不能用WinRar这些软件打开,例子如下:


压缩:

   TFileStream *input = new TFileStream("E:\\test.wav", fmOpenRead);

   TFileStream *output = new TFileStream("E:\\test.zip", fmCreate);

   // 注意各个RAD XE版本里的TZCompressionStream的构造函数有区别
   // TZCompressionStream *zip = new TZCompressionStream(output);
   TZCompressionStream *zip = new TZCompressionStream(TCompressionLevel::clMax, output);
   zip->CopyFrom(input, input->Size);
   delete zip;
   delete input;
   delete output;


解压:

   TFileStream *input = new TFileStream("E:\\test.zip", fmOpenRead);
   TFileStream *output = new TFileStream("E:\\test2.wav", fmCreate);
   TZDecompressionStream *unzip = new TZDecompressionStream(input);
   output->CopyFrom(unzip, 0);
   delete unzip;
   delete input;
   delete output;


 第二种方法:

用TZipFile类,缺省只能用TZipCompression::zcStored、TZipCompression::zcDeflate这2种模式,TZipCompression的其它模式可能要注册自己写的回调函数


压缩整个目录:

TZipFile::ZipDirectoryContents("E:\\Log1.zip", "E:\\Tmp\\LOG");


压缩单个或多个文件:

  String ZipFile = "E:\\Log.zip";
  String File1 = "E:\\Tmp\\LOG\\file1.log";
  String File2 = "E:\\Tmp\\LOG\\file2.log";


  TZipFile * zip = new TZipFile();
  zip->Open(ZipFile, TZipMode::zmWrite);
  zip->Add(File1, "log1.log");
  zip->Add(File2, "log2.log");
  zip->Close();
  delete zip;


解压全部文件:

使用TZipFile的ExtractAll函数


解压单个文件:

使用TZipFile的Extract函数


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值