Обзор

Инструменты архивирования и сжатия можно разделить на три основных класса:
- Архивы с несколькими файлами, обычно со сжатием – 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.

Комбинация ТАР.ГЗ

Существуют аналогичные методы для форматов сжатия 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");
        } 
    }

Другие поддерживаемые функции Aspose.ZIP для .NET API

Используйте библиотеку Aspose.ZIP C# для преобразования, объединения, редактирования документов в виде zip-файлов, извлечения данных из архивов и многого другого!

  

Support and Learning Resources

  
  

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