Преобразование ZIP в tar.gz через C#

Tar.gz — безусловно, самый распространенный формат сжатых архивов в мире Linux, а ZIP — самый популярный для Windows. Если вы хотите конвертировать ZIP-архив в tar.gz, прочтите эту статью.

Конверсия

Aspose.ZIP API предоставляет метод SaveGzipped для сжатия tar-архива на лету. Мы можем извлечь запись из ZIP-архива в память, не сохраняя ее в промежуточном хранилище, и сразу передать в tar-архив.

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

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

В следующем примере кода показано, как извлечь записи из ZIP-архива и сразу же поместить их в архив tar.gz. Записи, являющиеся каталогами, пропускаются, но их файлы добавляются с соблюдением относительных путей.

 1    using (Archive source = new Archive("source.zip"))
 2    {
 3        using (TarArchive tar = new TarArchive())
 4        {
 5            foreach (ArchiveEntry entry in source.Entries)
 6            {
 7                if (!entry.IsDirectory)
 8                {
 9                    MemoryStream mem = new MemoryStream();
10                    entry.Open().CopyTo(mem);                
11                    tar.CreateEntry(entry.Name, mem);
12                }
13            }
14
15            tar.SaveGzipped("result.tar.gz");
16        }
17    }
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.