Ми часто стикаємося зі сценарієм, коли кілька архівів ZIP інкапсульовано в інший ZIP. У таких випадках спочатку потрібно розпакувати батьківський архів ZIP, а потім один за одним вкладені архіви. Щоб полегшити вам роботу, у цій статті ми продемонструємо, як розпакувати вкладені архіви ZIP у C# .NET без написання складного коду.

C# .NET API для вилучення вкладених ZIP-архівів

Щоб розархівувати вкладені ZIP-архіви, ми використаємо Aspose.ZIP for .NET. API призначений для виконання операцій архівування з програм .NET. Це дозволяє безперешкодно створювати популярні формати архівів і працювати з ними. Ви можете завантажити DLL API або встановити його за допомогою NuGet.

PM> Install-Package Aspose.Zip

Розпакуйте вкладені архіви ZIP у C#

Щоб продемонструвати видобування вкладених ZIP-архівів, ми створили наступний ZIP-файл, який містить 3 записи.

Вкладені архіви ZIP

Вкладені архіви ZIP

Ми розпакуємо кожен вкладений ZIP-архів і збережемо його вміст в окремій папці. Нижче наведено кроки для вилучення вкладених ZIP-архівів у C#.

  • Спочатку створіть об’єкт FileStream, щоб завантажити файл ZIP.
  • Потім завантажте ZIP-файл за допомогою класу Архів.
  • Перегляньте кожен ArchiveEntry у колекції Archive.Entries.
  • Відфільтруйте ZIP-архіви в колекції та для кожного архіву виконайте такі дії:

У наведеному нижче прикладі коду показано, як розпакувати вкладені ZIP-архіви в C# .NET.

// Відкрити ZIP-файл у файловому потоці
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Завантажте ZIP-файл за допомогою класу Archive
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Доступ до кожного запису в архіві ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Створити потік пам'яті для вкладеного архіву
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Копіювати архів у потік пам'яті
                entry.Open().CopyTo(nestedArchiveStream);

                // Завантажити вкладений архів із потоку пам’яті
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Розпакуйте архів на диск.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

Нижче наведено знімок екрана витягнутих ZIP-архівів.

Видобування вкладених архівів ZIP у C# .NET

Розархівовані вкладені архіви

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію на використання Aspose.ZIP for .NET без обмежень щодо оцінювання.

Висновок

У цій статті ви дізналися, як видобувати вкладені архіви ZIP у C#. У покроковому посібнику та прикладі коду показано, як розархівувати кожен вкладений архів в окрему папку. Крім того, ви можете відвідати документацію, щоб дослідити інші функції Aspose.ZIP for .NET. Ви також можете поставити свої запитання через наш форум.

Дивись також