Объединение архивов TAR.GZ в C#

Если вы хотите объединить произвольное количество архивов Tar.gz в один архив, прочтите эту статью.

Описание

API Aspose.ZIP предоставляет класс TarArchive для извлечения и составления архивов Tar со сжатием или без него. Мы можем извлечь архив в память, не сохраняя его в промежуточном хранилище, и сразу передать его записи в объединенный архив Tar.

Убедитесь, что у вас достаточно виртуальной памяти для хранения содержимого всех записей.

Перенос записи

В следующем примере кода показано, как извлечь записи из нескольких архивов Tar.gz и сразу же поместить их в архив tar. Мы сжимаем его в памяти до gz, используя метод SaveGzipped.

 1    string[] archivesPaths = new string[] { "data/first.tar.gz",
 2        "data/second.tar.gz", "data/third.tar.gz" };
 3    TarArchive[] archives = new TarArchive[archivesPaths.Length];
 4
 5    using (TarArchive mergred = new TarArchive())
 6    {
 7        for (int i = 0; i < archivesPaths.Length; i++)
 8        {
 9            TarArchive a = TarArchive.FromGZip(archivesPaths[i]);
10            archives[i] = a;
11            foreach (TarEntry entry in a.Entries)
12                mergred.CreateEntry(entry.Name, entry.Open());
13        }
14
15        mergred.SaveGzipped("merged.tar.gz");
16
17        for (int i = 0; i < archivesPaths.Length; i++)
18        {
19            archives[i].Dispose();
20        }
21    }

Аналогичный подход для других архивов

Вы можете использовать тот же подход для объединения tar.lz, tar.xz, tar.z.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.