Utwórz płaski archiwum ZIP w C#

Wprowadzenie

Zarządzanie plikami ZIP może być trudne, szczególnie gdy zawierają zagnieżdżone archiwa. Ten przewodnik przeprowadzi Cię przez proces spłaszczania struktur ZIP poprzez wyodrębnienie wszystkich wewnętrznych archiwów ZIP do jednego archiwum przy użyciu Aspose.ZIP dla .NET.

Dlaczego warto stworzyć płaskie ZIP?

Tworzenie płaskiego archiwum ZIP oferuje kilka zalet:

  • Ułatwia zarządzanie plikami ZIP: Zmniejsza złożoność przy obsłudze wielu plików.
  • Wyodrębnia wszystkie zagnieżdżone zawartości ZIP do jednego archiwum: Konsoliduje pliki dla łatwiejszego dostępu.
  • Redukuje zbędne struktury folderów: Usprawnia organizację plików.

Spis treści

  1. Konfiguracja przetwarzania archiwów ZIP w C#
  2. Kroki do stworzenia płaskiego archiwum ZIP
  3. Zapisywanie spłaszczonego pliku ZIP
  4. Przetwarzanie wsadowe wielu archiwów ZIP
  5. Uzyskiwanie darmowej licencji API
  6. Podsumowanie i dodatkowe zasoby

1. Konfiguracja przetwarzania archiwów ZIP w C#

Aby skutecznie przetwarzać zagnieżdżone archiwa ZIP, skorzystamy z Aspose.ZIP dla .NET. Ta potężna biblioteka oferuje:

  • Automatyczne wyodrębnianie i ponowne kompresowanie ZIP.
  • Wsparcie dla wielu formatów archiwów: ZIP, TAR, GZip i inne.
  • Efektywne przetwarzanie dużych archiwów.

Instalacja

Możesz łatwo zainstalować bibliotekę za pośrednictwem NuGet:

PM> Install-Package Aspose.Zip

Alternatywnie, możesz pobrać DLL z strony pobierania Aspose.


2. Kroki do stworzenia płaskiego archiwum ZIP

Rozważ następującą strukturę zagnieżdżonego ZIP:

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

Po spłaszczeniu wszystkie wewnętrzne zawartości ZIP zostaną skonsolidowane w archiwum nadrzędnym:

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

Przykład kodu

Oto jak możesz zautomatyzować wyodrębnianie zagnieżdżonych plików ZIP:

// Załaduj plik ZIP nadrzędny
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");
}

Ta metoda skutecznie automatyzuje wyodrębnianie zagnieżdżonych plików ZIP, zapewniając płynny przebieg pracy.


3. Zapisywanie spłaszczonego pliku ZIP

Gdy wyodrębnisz zawartości zagnieżdżonych ZIP, zapisz spłaszczony plik ZIP za pomocą następującej linii kodu:

parentZip.Save("flattened.zip");

To zapewnia, że masz jedno archiwum ZIP bez zagnieżdżonych folderów, co znacznie ułatwia zarządzanie plikami.


4. Przetwarzanie wsadowe wielu archiwów ZIP

Jeśli musisz spłaszczyć wiele archiwów ZIP znajdujących się w określonym folderze, możesz użyć następującego fragmentu kodu:

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

Ta metoda umożliwia automatyczne przetwarzanie wsadowe ZIP, oszczędzając czas i wysiłek.


5. Uzyskiwanie darmowej licencji API

Aby odblokować pełne funkcje Aspose.ZIP, możesz poprosić o darmową tymczasową licencję.

Aby uzyskać szczegółową dokumentację, odwiedź Przewodnik Aspose.ZIP. Jeśli masz jakiekolwiek pytania, nie wahaj się skontaktować z społecznością na forum Aspose.


6. Podsumowanie i dodatkowe zasoby

Podsumowanie

W tym przewodniku omówiliśmy:

Jak spłaszczyć pliki ZIP w C#
Wyodrębnianie zagnieżdżonych archiwów ZIP
Zapisywanie końcowego archiwum ZIP
Przetwarzanie wielu plików ZIP jednocześnie

Dzięki Aspose.ZIP dla .NET możesz efektywnie wyodrębniać i zarządzać archiwami ZIP w swoich aplikacjach. Zacznij optymalizować swoje procesy przetwarzania ZIP już dziś!