Spesso ci imbattiamo in uno scenario in cui più archivi ZIP sono incapsulati all’interno di un altro ZIP. In questi casi, devi prima estrarre lo ZIP genitore e poi gli archivi nidificati uno per uno. Per semplificarti le cose, in questo articolo dimostreremo come estrarre gli archivi ZIP nidificati in C# .NET senza scrivere codice complesso.
API C# .NET per estrarre archivi ZIP nidificati
Per decomprimere gli archivi ZIP annidati, utilizzeremo Aspose.ZIP for .NET. L’API è progettata per eseguire operazioni di archiviazione dall’interno delle applicazioni .NET. Ti consente di creare e manipolare i formati di archivio più diffusi senza problemi. Puoi scaricare la DLL dell’API o installarla utilizzando NuGet.
PM> Install-Package Aspose.Zip
Estrai archivi ZIP nidificati in C#
Per dimostrare l’estrazione di archivi ZIP nidificati, abbiamo creato il seguente file ZIP che contiene 3 voci.
Estrarremo ogni archivio ZIP nidificato e ne salveremo il contenuto in una cartella separata. Di seguito sono riportati i passaggi per estrarre archivi ZIP nidificati in C#.
- Innanzitutto, crea un oggetto FileStream per caricare il file ZIP.
- Quindi, carica il file ZIP usando la classe Archive.
- Scorri ogni ArchiveEntry nella raccolta Archive.Entries.
- Filtra gli archivi ZIP nella raccolta e per ogni archivio esegui i seguenti passaggi:
- Creare un oggetto MemoryStream e copiarvi la voce di archivio utilizzando il metodo ArchiveEntry.Open().CopyTo(Stream).
- Crea un’istanza della classe Archive per caricare l’archivio nidificato.
- Infine, estrai l’archivio in una cartella usando il metodo Archive.ExtractToDirectory(string).
L’esempio di codice seguente mostra come decomprimere gli archivi ZIP nidificati in C# .NET.
// Apri il file ZIP in un flusso di file
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Carica il file ZIP usando la classe Archive
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Accedi a ogni voce nell'archivio ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Crea flusso di memoria per l'archivio nidificato
MemoryStream nestedArchiveStream = new MemoryStream();
// Copia l'archivio nel flusso di memoria
entry.Open().CopyTo(nestedArchiveStream);
// Carica l'archivio nidificato dal flusso di memoria
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Estrai l'archivio su disco.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Quello che segue è lo screenshot degli archivi ZIP estratti.
Ottieni una licenza API gratuita
Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.ZIP per .NET senza limitazioni di valutazione.
Conclusione
In questo articolo, hai imparato come estrarre archivi ZIP nidificati in C#. La guida dettagliata e l’esempio di codice hanno dimostrato come decomprimere ogni archivio nidificato in una cartella separata. Inoltre, puoi visitare la documentazione per esplorare altre funzionalità di Aspose.ZIP per .NET. Inoltre, puoi porre le tue domande tramite il nostro forum.