C++ Builder壓縮、解壓縮檔案

來源:互聯網
上載者:User

第一種方法:

用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函數


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.