Panoramica

Possiamo dividere gli strumenti di archiviazione e compressione in tre classi principali:
- Archivi con più file solitamente con compressione – ZIP, 7Z, XAR;
- Archiviazione di più file senza compressione – TAR, CPIO;
- Compressione -solo formati senza voci – GZ, LZ, BZIP2, XZ, ZStandard, Z.
Gli archivi della seconda classe sono spesso combinati con formati di sola compressione. Sono popolari all’interno dei sistemi simili a Unix con le loro operazioni distinte: una per l’archiviazione, un’altra per la compressione. Di seguito sono riportate spiegazioni ed esempi per ogni tipo di archivio.

Archivi compressi che contengono più file

Usiamo il metodo CreateEntry per ogni file da comprimere. In questi esempi non forniamo le impostazioni di compressione, quindi sarebbero predefinite per il formato scelto.

Come ZIP diversi file

L’impostazione predefinita è l’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");	
    }

Come creare archivi 7-ZIP di più file

L’impostazione predefinita per 7-zip è l’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");	
    }

Archivio XAR con diversi file

L’impostazione predefinita è l’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");	
    }

Memorizzazione di più file senza compressione

L’approccio per i formati TAR e CPIO è simile e si basa sul metodo già noto CreateEntry .

Archivio TAR senza compressione

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

Archivio CPIO senza compressione

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

Formati di sola compressione senza voci

Tali archivi come GZIP, LZ, BZIP2, XZ, Z non supportano le voci e possono comprimere solo una singola fonte. Guarda i campioni con tale compressione.

Archivio GZ Formati di sola compressione senza voci

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

Archivio LZ Formati di sola compressione senza voci

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 consente di combinare formati di solo archivio e di sola compressione con un unico metodo. Ecco un esempio di questa funzionalità con la combinazione TAR.GZ. Per raggiungere questo obiettivo, utilizziamo il metodo SaveGzipped.

Combinazione TAR.GZ

Esistono metodi simili per i formati di compressione 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

Tuttavia dobbiamo utilizzare un altro approccio per il 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: