Visão geral

Podemos dividir as ferramentas de arquivamento e compactação em três classes principais:
- Arquivos com vários arquivos geralmente com compactação – ZIP, 7Z, XAR;
- Armazenamento de vários arquivos sem compactação – TAR, CPIO;
- Compressão -apenas formatos sem entradas – GZ, LZ, BZIP2, XZ, ZStandard, Z.
Arquivos da segunda classe são frequentemente combinados com formatos somente de compactação. Eles são populares em sistemas do tipo Unix com suas operações distintas – uma para arquivamento, outra para compactação. Abaixo estão explicações e exemplos para cada tipo de arquivo.

Arquivos compactados que contêm vários arquivos

Usamos o método CreateEntry para cada arquivo a ser compactado. Nestes exemplos não fornecemos configurações de compactação, portanto elas seriam padrão para o formato escolhido.

Como ZIP vários arquivos

O padrão é o algoritmo 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");	
    }

Como criar arquivos 7-ZIP de vários arquivos

O padrão para 7-zip é o algoritmo 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");	
    }

Arquivo XAR com vários arquivos

O padrão é o algoritmo 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");	
    }

Armazenando vários arquivos sem compactação

A abordagem para os formatos TAR e CPIO é semelhante e baseia-se no método já conhecido CreateEntry .

Arquivo TAR sem compactação

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");
    }

Arquivo CPIO sem compactação

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");
    }

Formatos somente de compactação sem entradas

Arquivos como GZIP, LZ, BZIP2, XZ, Z não suportam entradas e podem compactar apenas uma única fonte. Veja exemplos com essa compactação.

Arquivo GZ Formatos somente de compactação sem entradas

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");
    }
}

Arquivo LZ Formatos somente de compactação sem entradas

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 permite combinar formatos somente de arquivo e somente compactação com um único método. Aqui está um exemplo desta funcionalidade com a combinação TAR.GZ. Para conseguir isso, usamos o método SaveGzipped.

Combinação TAR.GZ

Existem métodos semelhantes para formatos de compactação 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");
    }

TAR.BZ2

No entanto, precisamos usar outra abordagem para o formato 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: