Преобразование 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 }