Často se setkáváme se scénářem, kdy je více ZIP archivů zapouzdřeno do jiného ZIP. V takových případech musíte nejprve extrahovat nadřazený ZIP a poté vnořené archivy jeden po druhém. Abychom vám to usnadnili, v tomto článku předvedeme, jak extrahovat vnořené archivy ZIP v C# .NET bez psaní složitého kódu.
C# .NET API pro extrahování vnořených ZIP archivů
K rozbalení vnořených ZIP archivů použijeme Aspose.ZIP for .NET. Rozhraní API je navrženo k provádění operací archivace z aplikací .NET. Umožňuje bezproblémově vytvářet a manipulovat s oblíbenými archivními formáty. Můžete si stáhnout DLL API nebo ji nainstalovat pomocí NuGet.
PM> Install-Package Aspose.Zip
Extrahovat vnořené archivy ZIP v C#
Abychom demonstrovali extrakci vnořených archivů ZIP, vytvořili jsme následující soubor ZIP, který obsahuje 3 položky.
Každý vnořený ZIP archiv rozbalíme a jeho obsah uložíme do samostatné složky. Níže jsou uvedeny kroky k extrahování vnořených archivů ZIP v C#.
- Nejprve vytvořte objekt FileStream pro načtení souboru ZIP.
- Poté načtěte soubor ZIP pomocí třídy Archiv.
- Procházejte každou ArchiveEntry v kolekci Archive.Entries.
- Filtrujte archivy ZIP v kolekci a pro každý archiv proveďte následující kroky:
- Vytvořte objekt MemoryStream a zkopírujte do něj záznam archivu pomocí metody ArchiveEntry.Open().CopyTo(Stream).
- Vytvořte instanci třídy Archive pro načtení vnořeného archivu.
- Nakonec rozbalte archiv do složky pomocí metody Archive.ExtractToDirectory(string).
Následující ukázka kódu ukazuje, jak rozbalit vnořené archivy ZIP v C# .NET.
// Otevřete soubor ZIP ve streamu souborů
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Načtěte soubor ZIP pomocí třídy Archive
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Přístup ke každému záznamu v archivu ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Vytvořte paměťový stream pro vnořený archiv
MemoryStream nestedArchiveStream = new MemoryStream();
// Zkopírujte archiv do paměťového streamu
entry.Open().CopyTo(nestedArchiveStream);
// Načtěte vnořený archiv ze streamu paměti
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Rozbalte archiv na disk.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Následuje snímek obrazovky extrahovaných archivů ZIP.
Získejte bezplatnou licenci API
Můžete získat bezplatnou dočasnou licenci k používání Aspose.ZIP pro .NET bez omezení hodnocení.
Závěr
V tomto článku jste se naučili, jak extrahovat vnořené archivy ZIP v C#. Podrobný průvodce a ukázka kódu ukazují, jak rozbalit každý vnořený archiv do samostatné složky. Kromě toho můžete navštívit dokumentaci a prozkoumat další funkce Aspose.ZIP pro .NET. Své dotazy můžete klást také prostřednictvím našeho fóra.