Lorsque vous travaillez avec des archives ZIP, vous pouvez rencontrer un scénario où un fichier ZIP contient d’autres fichiers ZIP, créant une structure imbriquée. Si vous souhaitez rationaliser cela en extrayant toutes les archives ZIP internes dans l’archive externe, vous êtes au bon endroit. Dans cet article, nous allons explorer comment créer une archive ZIP plate en C# en utilisant le puissant Aspose.ZIP pour .NET.
Table des matières
- Aperçu de l’API .NET pour créer des archives ZIP plates
- Étapes pour créer une archive ZIP plate
- Obtenez une licence API gratuite
- Conclusion
- Voir aussi
Aperçu de l’API .NET pour créer des archives ZIP plates
Pour créer des archives ZIP plates, nous allons utiliser la bibliothèque Aspose.ZIP pour .NET. Cette API d’archivage robuste vous permet de créer et d’extraire divers formats d’archive, y compris ZIP, TAR, GZip et 7z. Vous pouvez facilement installer cette bibliothèque depuis NuGet ou télécharger son DLL depuis la section des téléchargements.
PM> Install-Package Aspose.Zip
Étapes pour créer une archive ZIP plate en C#
Pour mieux comprendre la structure d’une archive ZIP plate, considérez l’exemple suivant. Initialement, nous avons une archive ZIP contenant une autre archive ZIP :
parent.zip
├ first.txt
├ inner.zip
│ ├ game.exe
│ └ subitem.bin
└ picture.gif
Après avoir transformé cette archive ZIP en une structure plate, toutes les entrées de l’archive ZIP interne seront extraites dans l’archive ZIP parent, ce qui donnera la structure suivante :
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Étapes d’implémentation
Voici comment créer programmétiquement une archive ZIP plate en C# :
- Charger l’archive ZIP parent : Utilisez la classe Archive pour charger l’archive ZIP parent.
- Initialiser les listes : Créez des listes pour stocker :
- Les entrées à supprimer de l’archive ZIP parent
- Les entrées extraites et leurs noms
- Parcourir les entrées de l’archive : Parcourez chaque ArchiveEntry dans l’archive ZIP parent à l’aide de la collection Archive.Entries.
- Traiter chaque entrée :
- Vérifiez si l’entrée est une archive ZIP en utilisant
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Si c’est le cas, ajoutez-la à la liste des entrées à supprimer.
- Ouvrez l’entrée dans un objet MemoryStream en utilisant
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Parcourez les entrées de l’archive ZIP interne, en effectuant les actions suivantes :
- Ajoutez le nom de chaque entrée à la liste des entrées à ajouter.
- Chargez chaque entrée dans un
MemoryStream
en utilisantArchiveEntry.Open().CopyTo(MemoryStream)
. - Ajoutez l’entrée à la liste des entrées à ajouter à l’archive ZIP parent.
- Vérifiez si l’entrée est une archive ZIP en utilisant
- Supprimer les entrées ZIP internes : Parcourez la liste des archives ZIP internes et supprimez chaque entrée en utilisant la méthode Archive.DeleteEntry(ArchiveEntry).
- Ajouter de nouvelles entrées à l’archive ZIP parent : Parcourez la liste des entrées à ajouter et incluez chaque entrée en utilisant la méthode Archive.CreateEntry(String, Stream).
- Enregistrer l’archive ZIP parent : Enfin, enregistrez l’archive ZIP parent modifiée en utilisant la méthode Archive.Save(String).
Voici un exemple de code démontrant comment créer une archive ZIP plate en C# :
Obtenez une licence API gratuite
Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.ZIP pour .NET sans aucune limitation d’évaluation.
Conclusion
Dans ce tutoriel, vous avez appris à créer efficacement une archive ZIP plate en C#. Nous avons démontré le processus d’extraction des archives ZIP internes dans l’archive ZIP parent, évitant ainsi efficacement les dossiers imbriqués. Pour plus d’informations, n’hésitez pas à consulter la documentation d’Aspose.ZIP pour .NET, ou contactez-nous via notre forum.