Dans le post précédent, j’ai discuté de différentes manières de créer des archives ZIP en utilisant C#. L’article a également expliqué comment créer des archives ZIP cryptées et protégées par mot de passe. Outre le format ZIP, il existe d’autres formats d’archive couramment utilisés tels que 7z, tar, RAR, etc. Parmi ceux-ci, le format d’archive 7z est basé sur une architecture open source et il est utilisé pour compresser des fichiers et des dossiers avec un taux de compression élevé. Il prend également en charge le cryptage AES 256 bits et permet également de crypter les noms des fichiers. Dans cet article, je vais vous montrer comment créer des archives 7z (7-Zip) par programmation à l’aide de C#.
Cet article est divisé en les sections suivantes :
- Créer une archive 7z (7-Zip) à l’aide de C#
- Créer une archive 7z cryptée AES à l’aide de C#
- Définir différents mots de passe pour les entrées 7z à l’aide de C#
Toutes les étapes et les exemples de code de cet article sont basés sur Aspose.ZIP for .NET. Par conséquent, assurez-vous d’avoir installé l’API en utilisant l’une des méthodes suivantes :
- Installez à l’aide de NuGet Package Manager.
- Télécharger DLL and add its reference to the project.
Créer une archive 7z (7-Zip) à l’aide de C#
Il pourrait y avoir deux scénarios possibles de compression de fichiers dans une archive 7z. Soit vous n’avez qu’un seul fichier, soit il peut y avoir un tas de fichiers à compresser. Vous pouvez traiter explicitement les deux scénarios.
Créer une archive 7z avec une seule entrée
Voici les étapes pour créer une archive 7z avec une seule entrée.
- Ouvrez un nouveau FileStream pour créer un fichier 7z.
- Créez une instance de la classe SevenZipArchive.
- Ajoutez le fichier à l’archive à l’aide de la méthode SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Créez et enregistrez une archive à l’aide de la méthode SevenZipArchive.Save(Stream).
L’exemple de code suivant montre comment créer une archive 7z (7-Zip) à l’aide de C#.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
Créer une archive 7z avec plusieurs entrées
Dans ce cas, vous pouvez placer les fichiers dans un dossier et transmettre le chemin du dossier à la méthode SevenZipArchive.CreateEntries(). Voici les étapes pour ajouter plusieurs entrées de fichier à une archive 7z.
- Créez une instance de la classe SevenZipArchive.
- Transmettez le chemin du dossier à la méthode SevenZipArchive.CreateEntries(String, Boolean).
- Appelez la méthode SevenZipArchive.Save(String).
L’exemple de code suivant montre comment créer une archive 7z avec plusieurs entrées à l’aide de C#.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
Créer une archive 7z cryptée AES à l’aide de C#
Le format 7z prend en charge le cryptage AES pour sécuriser les fichiers. Pour chiffrer un fichier 7z, la classe SevenZipAESEncryptionSettings est utilisée. L’exemple de code suivant montre comment créer une archive 7z chiffrée AES à l’aide de C#.
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.7z");
}
Définir différents mots de passe pour les entrées 7z à l’aide de C#
Le format 7z vous permet également de spécifier un mot de passe différent pour chaque entrée de fichier. Par exemple, si vous allez compresser deux fichiers dans une archive 7z, vous pouvez spécifier un mot de passe différent pour chaque fichier. Voici les étapes pour définir différents mots de passe pour les entrées 7z.
- Créez un nouveau FileStream pour le fichier d’archive 7z.
- Accédez à chaque entrée de fichier à l’aide de la classe FileInfo.
- Créez une instance de la classe SevenZipArchive.
- Créez une entrée dans l’archive 7z à l’aide de SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Enregistrez l’archive à l’aide de la méthode SevenZipArchive.Save(Stream).
L’exemple de code suivant montre comment définir un mot de passe pour chaque entrée dans une archive 7z.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
archive.Save(sevenZipFile);
}
}
Conclusion
Dans cet article, nous avons appris à créer des archives 7z par programmation à l’aide de C#. De plus, nous avons vu comment créer des fichiers 7z cryptés AES et définir un mot de passe pour chaque entrée de fichier. Vous pouvez en savoir plus sur la compression/décompression des fichiers à partir de ici.