Объединение нескольких архивов ZIP или TAR в C#

При работе с архивами из приложений .NET вам может понадобиться объединить несколько файлов ZIP или TAR. Например, вы можете извлечь файлы и папки из нескольких архивов и поместить их в один архив. Для этого в этой статье рассказывается, как объединить несколько файлов ZIP или TAR в C#. Мы рассмотрим объединение ZIP в ZIP, TAR в TAR, ZIP в TAR и TAR в ZIP.

C# .NET API для слияния файлов ZIP и TAR

Чтобы объединить несколько архивов ZIP и TAR, мы будем использовать Aspose.ZIP для .NET. Это многофункциональный .NET API, который позволяет создавать различные популярные форматы архивов и управлять ими. Вы можете либо скачать библиотеку DLL API, либо установить ее напрямую с помощью NuGet.

PM> Install-Package Aspose.Zip

Объединение нескольких ZIP-файлов в C#

Давайте начнем наше путешествие по объединению архивов в формате ZIP. Мы возьмем два ZIP-архива и соберем их записи в один ZIP-файл. Ниже приведены шаги для объединения нескольких ZIP-файлов в C#.

В следующем примере кода показано, как объединить два ZIP-файла в C#.

// Загрузите исходный ZIP-архив
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Загрузить целевой ZIP-архив
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Итерация по записям
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
            if (!entry.IsDirectory)
            {
                // Загрузить запись в поток памяти
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Добавить запись в целевой ZIP
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Сохранить объединенный архив отдельно
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Объединение нескольких файлов TAR в C#

Давайте теперь посмотрим, как объединить несколько архивов TAR в C#. Ниже приведены шаги для достижения этого.

В следующем примере кода показано, как объединить несколько файлов TAR в C#.

// Загрузите исходный архив TAR
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Загрузить целевой TAR-архив
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Итерация по записям
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
            if (!entry.IsDirectory)
            {
                // Загрузить запись в поток памяти
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Добавить запись в целевой TAR
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Сохранить объединенный архив отдельно
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Объединить ZIP в TAR на C#

В этом разделе мы увидим, как объединить ZIP-файл в архив TAR на C#. Ниже приведены шаги для выполнения этой операции.

В следующем примере кода показано, как объединить ZIP-архив в TAR.

// Загрузите исходный ZIP-архив
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Загрузить целевой TAR-архив
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Итерация по записям
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
            if (!entry.IsDirectory)
            {
                // Загрузить запись в поток памяти
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Добавить запись в целевой TAR
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Сохранить объединенный архив отдельно
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Объединить TAR с ZIP в C#

Как и в предыдущем примере, вы можете объединить файл TAR в ZIP. В следующем примере кода показано, как извлечь файлы из TAR и объединить их в ZIP.

// Загрузить TAR-архив
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Загрузить ZIP-архив
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Итерация по записям
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Убедитесь, что запись не является каталогом. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с учетом относительных путей.
            if (!entry.IsDirectory)
            {
                // Загрузить запись в поток памяти
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Добавить запись в ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Сохранить объединенный архив отдельно
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Получите бесплатную лицензию API

Вы можете использовать Aspose.ZIP для .NET без оценочных ограничений, получив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как программно объединить несколько архивов ZIP или TAR на C#. В частности, мы рассмотрели, как динамически объединять файлы ZIP, файлы TAR, ZIP в TAR и TAR в ZIP. Чтобы узнать больше об Aspose.ZIP для .NET, посетите документацию. Кроме того, вы можете оставлять свои вопросы на нашем форуме.

Смотрите также