Im vorherigen Beitrag habe ich verschiedene Möglichkeiten zum Erstellen von ZIP archiv mit C# besprochen. Der Artikel behandelte auch, wie man verschlüsselte und passwortgeschützte ZIP Archive erstellt. Neben dem ZIP Format gibt es einige andere häufig verwendete Archivformate wie 7z, tar, RAR usw. Unter diesen basiert das 7z-Archivformat auf einer Open-Source-Architektur und es wird verwendet, um Dateien und Ordner mit einem hohen Komprimierungsverhältnis zu komprimieren. Es unterstützt auch die 256-Bit-AES Verschlüsselung und ermöglicht auch die Verschlüsselung der Dateinamen. In diesem Artikel zeige ich, wie Sie 7z (7-Zip)-Archive programmgesteuert mit C# erstellen.
Dieser Artikel ist in die folgenden Abschnitte unterteilt:
- Erstellen Sie ein 7z-Archiv (7-Zip) mit C#
- Erstellen Sie ein AES-verschlüsseltes 7z-Archiv mit C#
- Legen Sie unterschiedliche Passwörter für 7z-Einträge mit C# fest
Alle Schritte und Codebeispiele in diesem Artikel basieren auf Aspose.ZIP for .NET. Stellen Sie daher sicher, dass Sie die API mit einer der folgenden Methoden installiert haben:
- Installieren Sie mit NuGet Package Manager.
- Download DLL and add its reference to the project.
7z-Archiv (7-Zip) mit C# erstellen
Es könnte zwei mögliche Szenarien geben, Dateien in ein 7z-Archiv zu komprimieren. Entweder haben Sie nur eine einzige Datei oder es gibt eine Reihe von Dateien, die komprimiert werden müssen. Sie können beide Szenarien explizit behandeln.
Erstellen Sie ein 7z-Archiv mit einem einzigen Eintrag
Im Folgenden sind die Schritte zum Erstellen eines 7z-Archivs mit einem einzigen Eintrag aufgeführt.
- Öffnen Sie einen neuen FileStream, um eine 7z Datei zu erstellen.
- Erstellen Sie eine Instanz der Klasse SevenZipArchive.
- Datei mit der methode SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings) zum Archiv hinzufügen.
- Erstellen und speichern Sie das Archiv mit der methode SevenZipArchive.Save(Stream).
Das folgende Codebeispiel zeigt, wie Sie mit C# ein 7z-Archiv (7-Zip) erstellen.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
Erstellen Sie ein 7z-Archiv mit mehreren Einträgen
In diesem Fall können Sie die Dateien in einem Ordner ablegen und den Pfad des Ordners an die Methode SevenZipArchive.CreateEntries() übergeben. Im Folgenden finden Sie Schritte zum Hinzufügen mehrerer Dateieinträge zu einem 7z-Archiv.
- Erstellen Sie eine Instanz der Klasse SevenZipArchive.
- Übergeben Sie den Pfad des Ordners an die Methode SevenZipArchive.CreateEntries(String, Boolean).
- Rufen Sie die Methode SevenZipArchive.Save(String) auf.
Das folgende Codebeispiel zeigt, wie Sie mit C# ein 7z-Archiv mit mehreren Einträgen erstellen.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
Erstellen Sie ein AES-verschlüsseltes 7z-Archiv mit C#
7z Format unterstützt AES Verschlüsselung zum Sichern der Dateien. Um eine 7z Datei zu verschlüsseln, wird die Klasse SevenZipAESEncryptionSettings verwendet. Das folgende Codebeispiel zeigt, wie Sie mit C# ein AES-verschlüsseltes 7z-Archiv erstellen.
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");
}
Legen Sie unterschiedliche Passwörter für 7z-Einträge mit C# fest
7z Format können Sie auch für jeden Dateieintrag ein anderes Passwort festlegen. Wenn Sie beispielsweise zwei Dateien in einem 7z-Archiv komprimieren, können Sie für jede Datei ein anderes Passwort festlegen. Im Folgenden sind die Schritte zum Festlegen unterschiedlicher Passwörter für 7z-Einträge aufgeführt.
- Erstellen Sie einen neuen FileStream für die 7z-Archivdatei.
- Greifen Sie mit der Klasse FileInfo auf jeden Dateieintrag zu.
- Erstellen Sie eine Instanz der Klasse SevenZipArchive.
- Eintrag im 7z-Archiv erstellen mit SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Speichern Sie das Archiv mit der methode SevenZipArchive.Save(Stream).
Das folgende Codebeispiel zeigt, wie Sie für jeden Eintrag in einem 7z-Archiv ein Passwort festlegen.
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);
}
}
Fazit
In diesem Artikel haben wir gelernt, wie man 7z-Archive programmgesteuert mit C# erstellt. Außerdem haben wir gesehen, wie man AES-verschlüsselte 7z Dateien erstellt und für jeden Dateieintrag ein Passwort festlegt. Weitere Informationen zum Komprimieren/Dekomprimieren von Dateien finden Sie hier.