概述

我們可以將歸檔和壓縮工具分為三個主要類別:
- 通常壓縮多個檔案的歸檔- ZIP、7Z、XAR;
- 不壓縮儲存多個檔案- TAR、CPIO;
- 壓縮- 僅無條目的格式 – GZ、​​LZ、BZIP2、XZ、ZStandard、Z。它們以其獨特的操作在類 Unix 系統中很受歡迎——一個用於歸檔,另一個用於壓縮。以下是每種存檔類型的說明和範例。

包含多個檔案的壓縮檔案

我們對每個要壓縮的檔案使用 CreateEntry 方法。在這些範例中,我們不提供壓縮設置,因此它們將是所選格式的預設設定。

如何壓縮多個文件

預設為 Deflate 演算法

Zip compression with Deflate algoritm

    using (Archive archive = new Archive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");
        // Add as many entries as you need 
        archive.Save("archive.zip");	
    }

如何建立多個檔案的 7-ZIP 檔案

7-zip 的預設演算法是 LZMA 演算法

7-Zip with LZMA algorithm

    using (SevenZipArchive archive = new SevenZipArchive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");	
        // Add as many entries as you need 	
        archive.Save("archive.7z");	
    }

包含多個檔案的 XAR 存檔

預設是ZLib演算法

XAR with ZLib algorithm

    using (XarArchive archive = new XarArchive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");
        // Add as many entries as you need 	
        archive.Save("archive.xar");	
    }

儲存多個檔案而不壓縮

TAR 和 CPIO 格式的方法類似,位於已知的 CreateEntry 方法中。

未壓縮的 TAR 存檔

TAR storing files without compression

    using (TarArchive archive = new TarArchive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");
        // Add as many entries as you need 
        archive.Save("archive.tar");
    }

未壓縮的 CPIO 存檔

CPIO storing files without compression

    using (TarArchive archive = new TarArchive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");
        // Add as many entries as you need 
        archive.Save("archive.cpio");
    }

僅壓縮格式,無條目

GZIP、LZ、BZIP2、XZ、Z 等檔案不支援條目,只能壓縮單一來源。查看具有此類壓縮的範例。

GZ 檔案 僅壓縮格式,無條目

GZIP with compress only single source

using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
    using (GzipArchive archive = new GzipArchive())
    {
        archive.SetSource(source);
        archive.Save("archive.gz");
    }
}

LZ 檔案 僅壓縮格式,無條目

LZIP with compress only single source

using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
    using (GzipArchive archive = new GzipArchive())
    {
        archive.SetSource(source);
        archive.Save("archive.gz");
    }
}

Aspose.ZIP 允許透過單一方法將僅存檔和僅壓縮格式結合。以下是此功能與 TAR.GZ 組合的範例。為了實現這一點,我們使用 SaveGzipped 方法。

TAR.GZ 組合

LZIP、XZ、ZStandard、Z 壓縮格式也有類似的方法。

TAR.GZ with SaveGzipped method

    using (TarArchive archive = new TarArchive())
    {
        archive.CreateEntry("first.bin",  "data1.bin");
        archive.CreateEntry("second.bin",  "data2.bin");
        archive.SaveGzipped("archive.tar.gz");
    }

焦油BZ2

然而,我們需要對 BZIP2 格式使用另一種方​​法。

BZIP2 with SaveGzipped method

    using (TarArchive tar = new TarArchive())
    {
        tar.CreateEntry("first.bin",  "data1.bin");
        tar.CreateEntry("second.bin",  "data2.bin");	
        using (Bzip2Archive archive = new Bzip2Archive())
        {
            archive.SetSource(tar);
            archive.Save("archive.tar.bz2");
        } 
    }
  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: