Quando lavori con archivi ZIP, potresti incontrare uno scenario in cui un file ZIP contiene altri file ZIP, creando una struttura annidata. Se desideri semplificare questo estraendo tutti gli archivi ZIP interni nell’archivio esterno, sei nel posto giusto. In questo articolo, esploreremo come creare un archivio ZIP piatto in C# utilizzando il potente Aspose.ZIP per .NET.
Indice
- Panoramica dell’API .NET per Creare Archivi ZIP Piatto
- Passaggi per Creare un Archivio ZIP Piatto
- Ottieni una Licenza API Gratuita
- Conclusione
- Vedi Anche
Panoramica dell’API .NET per Creare Archivi ZIP Piatto
Per creare archivi ZIP piatti, utilizzeremo la libreria Aspose.ZIP per .NET. Questa robusta API di archiviazione consente di creare ed estrarre vari formati di archivio, inclusi ZIP, TAR, GZip e 7z. Puoi facilmente installare questa libreria da NuGet o scaricare il suo DLL dalla sezione download.
PM> Install-Package Aspose.Zip
Passaggi per Creare un Archivio ZIP Piatto in C#
Per comprendere meglio la struttura di un archivio ZIP piatto, considera il seguente esempio. Inizialmente, abbiamo un archivio ZIP che contiene un altro archivio ZIP:
parent.zip
├ first.txt
├ inner.zip
│ ├ game.exe
│ └ subitem.bin
└ picture.gif
Dopo aver trasformato questo archivio ZIP in una struttura piatta, tutte le voci dall’archivio ZIP interno saranno estratte nell’archivio ZIP genitore, portando alla seguente struttura:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Passaggi di Implementazione
Ecco come creare programmaticamente un archivio ZIP piatto in C#:
- Carica l’Archivio ZIP Genitore: Utilizza la classe Archive per caricare l’archivio ZIP genitore.
- Inizializza le Liste: Crea liste per memorizzare:
- Voci da eliminare dall’archivio ZIP genitore
- Voci estratte e i loro nomi
- Itera Attraverso le Voci dell’Archivio: Scorri ogni ArchiveEntry nell’archivio ZIP genitore utilizzando la collezione Archive.Entries.
- Elabora Ogni Voce:
- Controlla se la voce è un archivio ZIP utilizzando
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Se lo è, aggiungila alla lista delle voci da eliminare.
- Apri la voce in un oggetto MemoryStream utilizzando
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Itera attraverso le voci dell’archivio ZIP interno, eseguendo quanto segue:
- Aggiungi il nome di ogni voce alla lista delle voci da aggiungere.
- Carica ogni voce in un
MemoryStream
utilizzandoArchiveEntry.Open().CopyTo(MemoryStream)
. - Aggiungi la voce alla lista delle voci da aggiungere all’archivio ZIP genitore.
- Controlla se la voce è un archivio ZIP utilizzando
- Elimina le Voci ZIP Interne: Scorri la lista degli archivi ZIP interni ed elimina ogni voce utilizzando il metodo Archive.DeleteEntry(ArchiveEntry).
- Aggiungi Nuove Voci all’Archivio ZIP Genitore: Scorri la lista delle voci da aggiungere e includi ogni voce utilizzando il metodo Archive.CreateEntry(String, Stream).
- Salva l’Archivio ZIP Genitore: Infine, salva l’archivio ZIP genitore modificato utilizzando il metodo Archive.Save(String).
Ecco un esempio di codice che dimostra come creare un archivio ZIP piatto in C#:
Ottieni una Licenza API Gratuita
Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.ZIP per .NET senza alcuna limitazione di valutazione.
Conclusione
In questo tutorial, hai imparato come creare in modo efficiente un archivio ZIP piatto utilizzando C#. Abbiamo dimostrato il processo di estrazione degli archivi ZIP interni nell’archivio ZIP genitore, evitando efficacemente le cartelle annidate. Per ulteriori informazioni, sentiti libero di controllare la documentazione di Aspose.ZIP per .NET, oppure contattaci tramite il nostro forum.