Create a Flat ZIP Archive in C#

Введение

Управление ZIP-файлами может быть сложной, особенно когда они содержат nested архивы. Этот руководство пройдет через процесс флатенции ZIP-структур путем извлечения всех внутренних ZIP-файлов в единый архив с помощью Aspose.ZIP для .NET.

Зачем создавать плоский ZIP?

Создание плоского архива ZIP предлагает несколько преимуществ:

  • Упрощает управление файлами ZIP: уменьшает сложность при обработке нескольких файлов.
  • Экстрактирует все содержимое ZIP в один архив: консолидирует файлы для легкого доступа.
  • Снижает структуры папки, которые разрушаются: потоковые линии организации файлов.

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

1.Настройка обработки архивов ZIP в C#

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

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

Инсталляция

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

PM> Install-Package Aspose.Zip

В качестве альтернативы, вы можете скачать DLL из Скачать Aspose Downloads.

Шаги для создания 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 Архивы

Если вам нужно плавные несколько 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 файлов.

Получение бесплатной лицензии API

Чтобы отключить полные функции Aspose.ZIP, вы можете запросить бесплатную временную лицензию.

Для подробной документации, посетите Aspose.ZIP Guide ** . Если у вас есть какие-либо вопросы, будьте свободны связаться с сообществом на ** Forum Aspose.

Заключение и дополнительные ресурсы

Совокупность

В этом руководстве мы охватываем:

  • Как флатентировать ZIP файлы в C#
  • Извлечение нестированных ZIP архивов
  • Спаси финальный архив ZIP
  • Обработка нескольких ZIP файлов одновременно

С помощью Aspose.ZIP для .NET вы можете эффективно экстрактировать и управлять архивами ZIP в ваших приложениях!

Дополнительные ресурсы

Для разработчиков, стремящихся улучшить свое понимание, рассмотрим эти темы:

  • C# Create Zip Archive: Исследуйте различные способы создания файлов ZIP в ваших приложениях C.
  • Создание файла ZIP C# .NET Core: сосредоточенный на .NET Core, выучите лучшие практики для создания файлов ЗИП.
  • C# Экстракт файла из ZIP: шаг за шагом инструкция по экстракции конкретных файлов из архивов Zip.
  • C# Decompress ZIP: Подробный руководство по декомпрессированию файлов ЗИП с помощью C#.
  • Как Zip файлы в .NET с C#: Полный проход по zipping файлам с использованием .NET и c#.
  • C# ZipArchive Extract to Directory: Узнайте, как использовать ЗипАрхив для эффективного извлечения файлов.
  • C# Zipping Files: Исследуйте способы zipping файлов в 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: Техники для чтения конкретных файлов, хранящихся в архивах Zip.
  • C# Zip Lists: Узнайте, как беспрепятственно зашифровать списки файлов в ваших приложениях.
  • C# Zipping Файлы: Подробнее о методах для zipping файлов.
  • .NET Core Zip: Введение в .NET core ZIP файловое управление.
  • C# Archive: Научитесь использовать класс Архив для всесторонней обработки ZIP.

More in this category