Arbeiten mit 7z-Archiven
Überblick
7-Zip ist ein Dateiarchivierer mit einer hohen Komprimierungsrate. Mit der Aspose.ZIP-API können Sie 7-Zip-Archive in Ihren Anwendungen erstellen und verwalten, ohne dass andere Anwendungen von Drittanbietern erforderlich sind. Die Aspose.ZIP API stellt die Klasse „ SevenZipArchive“ für die Arbeit mit 7-Zip-Archiven bereit. Diese Klasse stellt verschiedene Methoden zum Ausführen von Vorgängen an Archiven bereit. Die API stellt die Klasse SevenZipArchiveEntry zur Darstellung einer einzelnen Datei im 7z-Archiv bereit.
Erstellen Sie einen 7-Zip-Einzeleintrag
Das folgende Codebeispiel zeigt, wie Sie mithilfe der SevenZipArchive-Instanz einen 7-Zip-Eintrag erstellen.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 using (var archive = new SevenZipArchive())
4 {
5 archive.CreateEntry("data.bin", "file.dat");
6 archive.Save(sevenZipFile);
7 }
8 }
7-Zip-Archiveinträge erstellen
Die SevenZipArchive-Klasse stellt CreateEntries-Methoden bereit, um Dateien und Verzeichnisse rekursiv im angegebenen Verzeichnis hinzuzufügen. Das folgende Codebeispiel zeigt, wie 7-Zip-Archiveinträge erstellt werden.
1 using (SevenZipArchive archive = new SevenZipArchive())
2 {
3 archive.CreateEntries(dataDir);
4 archive.Save("SevenZip.7z");
5 }
7-Zip-Verschlüsselungseinstellungen
Die Aspose.ZIP API stellt die Klasse SevenZipAESEncryptionSettings bereit, die Einstellungen für die AES-Verschlüsselung oder -Entschlüsselung für 7z-Archive bereitstellt. Das folgende Codebeispiel zeigt, wie AES-Verschlüsselungseinstellungen bereitgestellt werden.
1 using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
2 {
3 archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
4 archive.Save("archive.7z");
5 }
Das AES-256 ist die einzig mögliche Verschlüsselungsmethode für das 7z-Archiv.
7-Zip-Archiv mit LZMA-Komprimierung
Das folgende Codebeispiel zeigt, wie man ein 7z-Archiv mit LZMA-Komprimierung und AES-Verschlüsselung erstellt.
Schritte: Erstellen ein 7z-Archiv mit LZMA-Komprimierung und AES-Verschlüsselung über C#
- Öffnen Sie mit FileMode.Create einen Dateistream für das ausgegebene 7z-Archiv.
- Erstellen Sie eine Instanz der SevenZipArchive-Klasse.
- Verwenden Sie die CreateEntry-Methode, um dem Archiv einen Eintrag hinzuzufügen, und geben Sie Folgendes an:
– Die zu komprimierende Datei.
- LZMA-Komprimierungseinstellungen mit SevenZipLZMACompressionSettings.
- AES-Verschlüsselungseinstellungen mit SevenZipAESEncryptionSettings (mit Passwort).
- Speichern Sie das Archiv mit der Save-Methode, um die komprimierten und verschlüsselten Daten in die Datei zu schreiben.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 using (var archive = new SevenZipArchive())
4 {
5 archive.CreateEntry("entry1.bin",
6 new MemoryStream(new byte[] { 0x00, 0xFF }),
7 new SevenZipEntrySettings(new SevenZipLZMACompressionSettings(),
8 new SevenZipAESEncryptionSettings("test1")),
9 new FileInfo("data1.bin"));
10 archive.Save(sevenZipFile);
11 }
12 }
Ebenso können Sie 7z-Archive mit den Komprimierungsmethoden BZip2, PPMd und LZMA2 erstellen oder Dateien ohne Komprimierung speichern.
Anderes Passwort für Einträge festlegen
Das folgende Codebeispiel zeigt, wie Sie ein Archiv mit Einträgen erstellen, die mit unterschiedlichen Passwörtern für jeden Eintrag verschlüsselt sind.
Schritte: Erstellen ein 7z-Archiv mit LZMA-Komprimierung und AES-Verschlüsselung über C#
- Öffnen Sie einen Dateistream, um das 7z-Archiv mit FileMode.Create zu erstellen.
- Bereiten Sie die Dateien (FileInfo-Objekte) vor, die Sie als Einträge zum Archiv hinzufügen möchten.
- Erstellen Sie eine Instanz der SevenZipArchive-Klasse.
- Verwenden Sie für jeden Eintrag die Methode CreateEntry, um die Datei zum Archiv hinzuzufügen:
- Geben Sie die Komprimierungsmethode an (in diesem Fall SevenZipStoreCompressionSettings).
- Legen Sie mit SevenZipAESEncryptionSettings ein anderes Passwort für jeden Eintrag fest.
- Speichern Sie das Archiv mit der Save-Methode, um die verschlüsselten Einträge in die Datei zu schreiben.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 FileInfo fi1 = new FileInfo("data1.bin");
4 FileInfo fi2 = new FileInfo("data2.bin");
5 FileInfo fi3 = new FileInfo("data3.bin");
6 using (var archive = new SevenZipArchive())
7 {
8 archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
9 archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
10 archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
11 archive.Save(sevenZipFile);
12 }
13 }
Extraktion von 7z-Archiven
Now Aspose.ZIP can extract LZMA, LZMA2, BZip2 and PPMd compressed archives.
Das folgende Codebeispiel zeigt, wie ein 7z-Archiv in ein Verzeichnis extrahiert wird.
1 using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
2 {
3 archive.ExtractToDirectory("ExtractionFolder");
4 }