Créer une archive 7Zip en C#

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 :

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 :

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.

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.

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.

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.

Articles Liés