Przegląd

Narzędzia do archiwizacji i kompresji możemy podzielić na trzy główne klasy:
- Archiwa zawierające kilka plików, zwykle z kompresją – ZIP, 7Z, XAR;
- Przechowywanie kilku plików bez kompresji – TAR, CPIO;
- Kompresja -tylko formaty bez wpisów – GZ, LZ, BZIP2, XZ, ZStandard, Z.
Archiwa drugiej klasy często łączone są z formatami wyłącznie kompresyjnymi. Są popularne w systemach uniksowych ze względu na różne operacje – jedną do archiwizacji, drugą do kompresji. Poniżej znajdują się wyjaśnienia i próbki dla każdego rodzaju archiwum.

Skompresowane archiwa zawierające wiele plików

Do każdego skompresowanego pliku używamy metody CreateEntry. W tych przykładach nie podajemy ustawień kompresji, więc będą one domyślne dla wybranego formatu.

Jak spakować kilka plików w formacie ZIP

Wartość domyślna to algorytm 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");	
    }

Jak utworzyć archiwa 7-ZIP kilku plików

Domyślnym ustawieniem dla 7-zip jest algorytm 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");	
    }

Archiwum XAR z kilkoma plikami

Domyślnie jest to algorytm 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");	
    }

Przechowywanie kilku plików bez kompresji

Podejście do formatów TAR i CPIO jest podobne i opiera się na znanej już metodzie CreateEntry .

Archiwum TAR bez kompresji

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

Archiwum CPIO bez kompresji

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

Formaty przeznaczone wyłącznie do kompresji, bez wpisów

Archiwa takie jak GZIP, LZ, BZIP2, XZ, Z nie obsługują wpisów i mogą kompresować tylko jedno źródło. Zobacz próbki z taką kompresją.

Archiwum GZ Formaty wyłącznie kompresyjne, bez wpisów

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

Archiwum LZ Formaty wyłącznie kompresyjne, bez wpisów

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 umożliwia łączenie formatów przeznaczonych wyłącznie do archiwizacji i formatów przeznaczonych wyłącznie do kompresji za pomocą jednej metody. Oto przykład tej funkcjonalności z kombinacją TAR.GZ. Aby to osiągnąć, używamy metody SaveGzipped.

Kombinacja TAR.GZ

Istnieją podobne metody kompresji formatów 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

Musimy jednak zastosować inne podejście w przypadku formatu 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");
        } 
    }

Inne obsługiwane funkcje Aspose.ZIP dla .NET API

Skorzystaj z biblioteki Aspose.ZIP C#, aby konwertować, scalać, edytować dokumenty w formacie zip, wyodrębniać dane z archiwów i nie tylko!

  

Support and Learning Resources

  
  

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