Décompressez les fichiers en C#

Dans le post précédent, vous avez appris différentes manières de compresser des fichiers et des dossiers dans des archives ZIP à l’aide de Aspose.ZIP for .NET. Dans cet article, je vais vous montrer comment extraire ou décompresser des fichiers dans des archives ZIP à l’aide de C#. Nous verrons également comment extraire par programme des archives ZIP protégées par mot de passe ou cryptées AES. Cet article est divisé en les sections suivantes :

API C# pour décompresser les fichiers

Avant de commencer, assurez-vous d’avoir téléchargé et référencé Aspose.ZIP for .NET ou installé son package à l’aide de NuGet Package Manager dans votre projet.

Décompressez les fichiers ZIP à l’aide de C#

Le processus de décompression des fichiers ZIP peut être réalisé de deux manières :

  • Décompressez chaque fichier en ZIP séparément
  • Décompressez les fichiers dans un dossier spécifié

Dans la première méthode, vous pouvez explicitement accéder et décompresser chaque fichier dans l’archive ZIP. De plus, vous pouvez imprimer la progression du processus d’extraction. Alors que la deuxième méthode décompresse simplement les fichiers dans le dossier spécifié.

Extrayez chaque fichier dans l’archive séparément

Voici les étapes pour accéder et extraire les fichiers et imprimer la progression de l’extraction en C# :

L’exemple de code suivant montre comment extraire des fichiers dans une archive ZIP à l’aide de C#.

// Ouvrir le fichier ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
	{
		// Accéder à chaque entrée dans l'archive ZIP
		for (int i = 0; i < archive.Entries.Count; i++)
		{
			int percentReady = 0;
			// Enregistrez la progression de l'extraction dans la console.
			archive.Entries[i].ExtractionProgressed += (s, e) =>
			{
				int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
				if (percent > percentReady)
				{
					Console.WriteLine(string.Format("{0}% decompressed", percent));
					percentReady = percent;
				}
			};
			// Extrayez le contenu de l'entrée sur le disque.
			archive.Entries[i].Extract(archive.Entries[i].Name);
		}
	}
}

Extraire des fichiers dans un dossier

Les étapes suivantes sont utilisées pour extraire des fichiers dans un dossier spécifique en C#.

L’exemple de code C# suivant décompresse les fichiers dans un dossier.

// Ouvrir le fichier ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	using (var archive = new Archive(zipFile))
	{
		// Décompressez les fichiers dans le dossier
		archive.ExtractToDirectory("Unzipped Files");
	}
}

Décompressez les fichiers ZIP protégés par mot de passe en C#

Vous pouvez également décompresser une archive ZIP protégée par mot de passe en utilisant Aspose.ZIP for .NET. Pour cela, il suffit de spécifier le mot de passe à l’aide de la classe ArchiveLoadOptions qui sera passée en second paramètre au constructeur de l’Archive.

Voici un exemple de code pour décompresser un fichier ZIP protégé par mot de passe.

// Ouvrir le fichier ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
	// Déchiffrer à l'aide d'un mot de passe
	using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
	{
    		// Extraire les fichiers dans le dossier
		archive.ExtractToDirectory("Unzipped Files");
	}
}

Extraire des fichiers ZIP chiffrés AES en C#

Une archive ZIP peut également être cryptée avec le cryptage AES. Aspose.ZIP for .NET prend en charge le cryptage des archives avec les méthodes de cryptage AES128, AES192 et AES256. La décompression d’un fichier ZIP crypté AES est similaire à la décompression de fichiers ZIP protégés par mot de passe. Spécifiez simplement le mot de passe de déchiffrement à l’aide de la classe ArchiveLoadOptions et le reste sera pris en charge par l’API.

L’exemple de code suivant montre comment décompresser des fichiers ZIP chiffrés AES en C#.

// Ouvrir le fichier ZIP
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
  	// Décrypter et extraire dans un dossier
	new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}

Obtenez une licence API gratuite

Vous pouvez utiliser Aspose.ZIP for .NET sans limitation d’évaluation en obtenant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à décompresser des fichiers ZIP à l’aide de C#. De plus, vous avez vu comment décompresser des fichiers dans des archives ZIP protégées par mot de passe. Les exemples de code ont également montré comment extraire des fichiers dans une archive ZIP chiffrée en C#. Vous pouvez en savoir plus sur Aspose.ZIP for .NET en utilisant documentation.

Articles Liés