Create a Flat ZIP Archive in C#

Введення

Управління ZIP-файлами може бути складною, особливо коли вони містять nested archives. Цей посібник пройде через процес flattening ZIP structures шляхом екстракції всіх internal ZIP archives into a single archive using Aspose.ZIP for .NET.

Чому потрібно створювати Flat ZIP?

Створення плоського ZIP-архіву пропонує кілька переваг:

  • Простіше управління файлами ZIP: зменшує складність при використанні кількох файлів.
  • Витягує в один архів всі закріплені ZIP-контенти: консолідує файли для легкого доступу.
  • Знижує редунантні структури папки: поточні лінії організації файлів.

Таблиця контенту

Налаштування обробки ZIP Archive в C#

Щоб ефективно обробляти nested ZIP архіви, ми будемо використовувати [Aspose.ZIP для .NET](https://products.aspose.net/zip:

  • Автоматична екстракція і рекомпресія ZIP.
  • Підтримка для кількох форматів архіву: ZIP, TAR, GZip і багато іншого.
  • Ефективна обробка великих архівів.

Встановлення

Бібліотеку можна легко встановити через NuGet:

PM> Install-Package Aspose.Zip

В іншому випадку ви можете завантажити DLL з Завантажити сторінку.

Крок до створення Flat ZIP Archive

Розглянемо наступну структуру Nested ZIP:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ file1.exe
 │ └ data.bin
 └ picture.gif

Після флатентування всі внутрішні ZIP-контенти будуть консолідовані в материнський ZIP:

flattened.zip
 ├ first.txt
 ├ picture.gif
 ├ file1.exe
 └ data.bin

Код прикладу

Ось як ви можете автоматизувати екстракцію знешкоджених ZIP файлів:

// Load the parent ZIP file
using (Archive parentZip = new Archive("parent.zip"))
{
    List<ArchiveEntry> toDelete = new List<ArchiveEntry>();
    List<string> newEntryNames = new List<string>();
    List<MemoryStream> newStreams = new List<MemoryStream>();

    foreach (ArchiveEntry entry in parentZip.Entries)
    {
        if (entry.Name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
        {
            toDelete.Add(entry);
            using (MemoryStream zipStream = new MemoryStream())
            {
                entry.Open().CopyTo(zipStream);
                zipStream.Position = 0;
                using (Archive innerZip = new Archive(zipStream))
                {
                    foreach (ArchiveEntry innerEntry in innerZip.Entries)
                    {
                        using (MemoryStream entryStream = new MemoryStream())
                        {
                            innerEntry.Open().CopyTo(entryStream);
                            newEntryNames.Add(innerEntry.Name);
                            newStreams.Add(entryStream);
                        }
                    }
                }
            }
        }
    }

    foreach (var entry in toDelete)
        parentZip.DeleteEntry(entry);

    for (int i = 0; i < newEntryNames.Count; i++)
        parentZip.CreateEntry(newEntryNames[i], newStreams[i]);

    parentZip.Save("flattened.zip");
}

Цей метод ефективно автоматизує видобуток файлів ZIP, забезпечуючи гладкий робочий потік з функціями C# Archive.

Збереження Flattened ZIP File

Після того, як ви вилучили запліднений ZIP-контент, збережіть запліднений ZIP-файл за допомогою наступної лінії коду:

parentZip.Save("flattened.zip");

Це гарантує, що у вас є одинокий ZIP-архів без нішених папок, роблячи управління файлами набагато простіше за допомогою C# Zip Compression технологій.

4.Batch Processing Multiple ZIP Архів

Якщо вам потрібні плавні численні ЗІП-архіви, розташовані в певній папці, ви можете використовувати наступний код:

string[] files = Directory.GetFiles("zip_folder", "*.zip");
foreach (string file in files)
{
    using (Archive archive = new Archive(file))
    {
        archive.ExtractToDirectory("output_folder");
    }
}

Цей метод дозволяє автоматизовано обробляти ZIP на великій кількості, заощаджуючи час і зусилля при ефективному використанні C# Zip Files.

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

Щоб розблокувати повні функції Aspose.ZIP, ви можете замовити безкоштовну тимчасову ліцензію.

Для детальної документації відвідайте Aspose.ZIP Guide ** . Якщо у вас є будь-які запитання, будьте вільними співпрацювати з громадою на ** Forum.

Висновки та додаткові ресурси

резюме

У цьому інструкції ми охоплюємо:

  • Як завантажити файли ZIP в C#
  • Витяг ністированих ZIP-архівів
  • Збереження останнього ZIP архіву
  • Процесувати кілька ZIP файлів одночасно

Завдяки Aspose.ZIP для .NET, ви можете ефективно видобувати та керувати файлами ZIP у своїх додатках!

Додаткові ресурси

Для розробників, які прагнуть підвищити своє розуміння, розгляньте ці теми:

  • C# Create Zip Archive: Вивчайте різні методи створення ZIP-файлів у ваших додатках C.
  • Створення файлу ZIP C# .NET Core: зосереджений на .NET Core, дізнайтеся про кращі практики для створення файлів ЗІП.
  • C# Екстракт файлів з ZIP: Крок за кроком інструкції щодо екстракції конкретні файли з ЗIP-архівів.
  • C# Decompress ZIP: Детальний посібник про декомпресію файлів ЗІП за допомогою C#.
  • Як з’єднати файли в .NET з C#: Повний прохід по zipping файлах за допомогою .NET і C#.
  • C# ZipArchive Extract to Directory: Дізнайтеся, як використовувати ЗіпАрхів для ефективного видобутку файлів.
  • C# Zipping Files: Вивчайте способи з’єднання файлів в C# для поліпшення продуктивності та зручності.
  • .NET Core Create Zip File: Детальний погляд на створення ZIP-файлів за допомогою .NET Core і C#.
  • C# Zip: Дізнайтеся, як ефективно обробляти файли ZIP в C#.
  • C# Zip Example: Переглянути практичні приклади zipping файлів в C# для ускладнення вашого процесу розробки.
  • .NET Core Zip: Найкращі практики для роботи з ZIP-файлами в додатках .NET Core.
  • C# Open ZIP: розуміє, як ефективно відкривати і читати файли ЗІП.
  • C# Читати Файли з ZIP: Техніки для читання конкретних файлів, що зберігаються в ЗІП архівах.
  • C# Zip Lists: Дізнайтеся, як безперервно зашифрувати списки файлів у ваших додатках.
  • C# Zipping Files: Більш детальний погляд на методи для zipping файлів.
  • .NET Core Zip: Вплив до управління файлами .NET Core zip.
  • C# Archive: Дізнайтеся, як скористатися класом Archive для всебічного обробки ZIP.

More in this category