Nous rencontrons souvent le scénario où plusieurs archives ZIP sont encapsulées dans un autre ZIP. Dans de tels cas, vous devez d’abord extraire le ZIP parent, puis les archives imbriquées une par une. Pour vous faciliter la tâche, dans cet article, nous vous montrerons comment extraire les archives ZIP imbriquées en C# .NET sans écrire de code complexe.
API C# .NET pour extraire les archives ZIP imbriquées
Pour décompresser les archives ZIP imbriquées, nous utiliserons Aspose.ZIP for .NET. L’API est conçue pour effectuer des opérations d’archivage à partir des applications .NET. Il vous permet de créer et de manipuler des formats d’archives populaires de manière transparente. Vous pouvez soit télécharger la DLL de l’API, soit l’installer à l’aide de NuGet.
PM> Install-Package Aspose.Zip
Extraire les archives ZIP imbriquées en C#
Pour démontrer l’extraction d’archives ZIP imbriquées, nous avons créé le fichier ZIP suivant qui contient 3 entrées.
Nous allons extraire chaque archive ZIP imbriquée et enregistrer son contenu dans un dossier séparé. Voici les étapes pour extraire les archives ZIP imbriquées en C#.
- Tout d’abord, créez un objet FileStream pour charger le fichier ZIP.
- Ensuite, chargez le fichier ZIP en utilisant la classe Archive.
- Parcourez chaque collection ArchiveEntry dans Archive.Entries.
- Filtrez les archives ZIP dans la collection et pour chaque archive effectuez les étapes suivantes :
- Créez un objet MemoryStream et copiez-y l’entrée d’archive à l’aide de la méthode ArchiveEntry.Open().CopyTo(Stream).
- Créez une instance de la classe Archive pour charger l’archive imbriquée.
- Enfin, extrayez l’archive dans un dossier à l’aide de la méthode Archive.ExtractToDirectory(string).
L’exemple de code suivant montre comment décompresser des archives ZIP imbriquées dans C# .NET.
// Ouvrir le fichier ZIP dans un flux de fichiers
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Charger le fichier ZIP à l'aide de la classe Archive
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Accéder à chaque entrée dans l'archive ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Créer un flux de mémoire pour l'archive imbriquée
MemoryStream nestedArchiveStream = new MemoryStream();
// Copier l'archive dans le flux de mémoire
entry.Open().CopyTo(nestedArchiveStream);
// Charger l'archive imbriquée à partir du flux de mémoire
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Extrayez l'archive sur le disque.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Voici la capture d’écran des archives ZIP extraites.
Obtenez une licence API gratuite
Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.ZIP for .NET sans limitations d’évaluation.
Conclusion
Dans cet article, vous avez appris à extraire des archives ZIP imbriquées en C#. Le guide étape par étape et l’exemple de code ont montré comment décompresser chaque archive imbriquée dans un dossier séparé. En outre, vous pouvez visiter documentation pour explorer d’autres fonctionnalités d’Aspose.ZIP for .NET. Vous pouvez également poser vos questions via notre forum.