Crea Archivio ZIP Piatto in C#

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

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#:

  1. Carica l’Archivio ZIP Genitore: Utilizza la classe Archive per caricare l’archivio ZIP genitore.
  2. Inizializza le Liste: Crea liste per memorizzare:
    • Voci da eliminare dall’archivio ZIP genitore
    • Voci estratte e i loro nomi
  3. Itera Attraverso le Voci dell’Archivio: Scorri ogni ArchiveEntry nell’archivio ZIP genitore utilizzando la collezione Archive.Entries.
  4. 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 utilizzando ArchiveEntry.Open().CopyTo(MemoryStream).
      • Aggiungi la voce alla lista delle voci da aggiungere all’archivio ZIP genitore.
  5. Elimina le Voci ZIP Interne: Scorri la lista degli archivi ZIP interni ed elimina ogni voce utilizzando il metodo Archive.DeleteEntry(ArchiveEntry).
  6. 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).
  7. 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.

Vedi Anche