Einführung in ZIP-Archive in C#
ZIP-Archive sind entscheidend für die Komprimierung und Organisation von Dateien und Ordnern in einem einzigen, handhabbaren Container. Sie reduzieren nicht nur die Dateigrößen für eine effiziente Speicherung und Übertragung, sondern bewahren auch Metadaten und können zur zusätzlichen Sicherheit verschlüsselt werden. In diesem Artikel werden wir verschiedene Methoden zur programmgesteuerten Erstellung von ZIP-Dateien in C# untersuchen, einschließlich der Hinzufügung von Dateien und Ordnern, der Erstellung passwortgeschützter Archive und der Anwendung von AES-Verschlüsselung.
Was Sie lernen werden
In diesem Artikel erfahren Sie, wie Sie:
- Ein ZIP-Archiv mit C# erstellen
- Mehrere Dateien zu einem ZIP-Archiv hinzufügen
- Ordner zu einem ZIP-Archiv hinzufügen
- Ein passwortgeschütztes ZIP-Archiv mit ZipCrypto erstellen
- ZIP-Archive mit AES-Verschlüsselung verschlüsseln
- Parallelkomprimierungsmodus festlegen
C# ZIP-Bibliothek
Die Aspose.ZIP für .NET-Bibliothek ist ein robustes Werkzeug zur Handhabung von ZIP-Dateioperationen innerhalb von .NET-Anwendungen, das das Zippen oder Entzippen von Dateien und Ordnern erleichtert. Sie unterstützt auch AES-Verschlüsselung für verbesserte Sicherheit. Sie können diese Bibliothek einfach von NuGet installieren oder die Binärdateien im Downloads-Bereich herunterladen.
Erstellen eines ZIP-Archivs in C#
Um programmgesteuert eine ZIP-Datei in C# zu erstellen, befolgen Sie diese Schritte:
- Erstellen Sie ein FileStream-Objekt für das Ausgab ZIP-Archiv.
- Öffnen Sie die Quelldatei als FileStream-Objekt.
- Instanziieren Sie die Archive-Klasse.
- Fügen Sie die Datei mit der Archive.CreateEntry(string, FileStream)-Methode zum Archiv hinzu.
- Speichern Sie das ZIP-Archiv mit der Archive.Save(FileStream)-Methode.
Hier ist ein Codebeispiel, das zeigt, wie Sie eine Datei zu einem ZIP-Archiv in C# hinzufügen:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create)) | |
{ | |
// File to be added to archive | |
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read)) | |
{ | |
using (var archive = new Archive(new ArchiveEntrySettings())) | |
{ | |
// Add file to the archive | |
archive.CreateEntry("alice29.txt", source1); | |
// ZIP file | |
archive.Save(zipFile); | |
} | |
} | |
} |
Mehrere Dateien zu einem ZIP-Archiv in C# hinzufügen
Wenn Sie mehrere Dateien zu einem ZIP-Archiv hinzufügen müssen, gibt es mehrere Ansätze, die Sie verfolgen können:
Verwenden von FileStream zum Hinzufügen mehrerer Dateien
Diese Methode verwendet die FileStream-Klasse, um Dateien über die Archive.CreateEntry(String, FileStream)-Methode zum ZIP-Archiv hinzuzufügen. So können Sie es machen:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create)) | |
{ | |
// File to be added to archive | |
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read)) | |
{ | |
// File to be added to archive | |
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read)) | |
{ | |
using (var archive = new Archive()) | |
{ | |
// Add files to the archive | |
archive.CreateEntry("alice29.txt", source1); | |
archive.CreateEntry("asyoulik3.txt", source2); | |
// ZIP the files | |
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" }); | |
} | |
} | |
} | |
} |
Verwenden von FileInfo für mehrere Dateien
Alternativ können Sie die FileInfo-Klasse verwenden, um Dateien zu laden und sie mit der Archive.CreateEntry(String, FileInfo)-Methode zum ZIP-Archiv hinzuzufügen. Unten ist ein Codebeispiel:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create)) | |
{ | |
// Files to be added to archive | |
FileInfo fi1 = new FileInfo("alice29.txt"); | |
FileInfo fi2 = new FileInfo("fields.c"); | |
using (var archive = new Archive()) | |
{ | |
// Add files to the archive | |
archive.CreateEntry("alice29.txt", fi1); | |
archive.CreateEntry("fields.c", fi2); | |
// Create ZIP archive | |
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII }); | |
} | |
} |
Verwenden von Dateipfaden
Sie können auch direkt die Dateipfade an die Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings)-Methode übergeben. Hier ist ein Beispiel:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create)) | |
{ | |
// Create archive | |
using (var archive = new Archive()) | |
{ | |
// Add file to ZIP archive | |
archive.CreateEntry("data.bin", "file.dat"); | |
archive.Save(zipFile); | |
} | |
} |
Ordner zu einem ZIP-Archiv in C# hinzufügen
Um einen Ordner zu einem ZIP-Archiv in C# hinzuzufügen, befolgen Sie diese Schritte:
- Erstellen Sie ein FileStream-Objekt für das Ausgab ZIP-Archiv.
- Instanziieren Sie die Archive-Klasse.
- Verwenden Sie die DirectoryInfo-Klasse, um den Ordner anzugeben, den Sie zippen möchten.
- Fügen Sie den Ordner mit der Archive.CreateEntries(DirectoryInfo)-Methode zum ZIP hinzu.
- Speichern Sie das ZIP-Archiv mit der Archive.Save(FileStream)-Methode.
Hier ist ein Codebeispiel, das zeigt, wie Sie einen Ordner zu einer ZIP-Datei hinzufügen:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create)) | |
{ | |
using (Archive archive = new Archive()) | |
{ | |
// Folder to be Zipped | |
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus"); | |
archive.CreateEntries(corpus); | |
// Create ZIP archive | |
archive.Save(zipFile); | |
} | |
} |
Erstellen eines passwortgeschützten ZIPs mit ZipCrypto in C#
Um Ihre ZIP-Archive zu sichern, können Sie einen Passwortschutz mit ZipCrypto-Verschlüsselung anwenden. Dies wird erreicht, indem Sie die ArchiveEntrySettings-Klasse im Konstruktor der Archive verwenden, die den Verschlüsselungstyp als Parameter akzeptiert.
So erstellen Sie ein passwortgeschütztes ZIP-Archiv mit ZipCrypto in C#:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create)) | |
{ | |
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$")))) | |
{ | |
// Add folder to the archive | |
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus"); | |
archive.CreateEntries(corpus); | |
// Create ZIP archive | |
archive.Save(zipFile); | |
} | |
} |
Erstellen eines passwortgeschützten ZIPs mit AES-Verschlüsselung
Die Aspose.ZIP für .NET-Bibliothek unterstützt ebenfalls AES-Verschlüsselung zum Schutz von ZIP-Archiven. Sie können aus den folgenden AES-Verschlüsselungsmethoden wählen:
- AES128
- AES192
- AES256
Um AES-Verschlüsselung anzuwenden, verwenden Sie die AesEcryptionSettings-Klasse. Unten ist ein Codebeispiel, das zeigt, wie Sie ein passwortgeschütztes ZIP mit AES-Verschlüsselung in C# erstellen:
// Create FileStream for output ZIP archive | |
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create)) | |
{ | |
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128)))) | |
{ | |
// Add folder to archive | |
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus"); | |
archive.CreateEntries(corpus); | |
// Create ZIP archive | |
archive.Save(zipFile); | |
} | |
} |
Parallelkomprimierungsmodus festlegen
Für die effiziente Handhabung mehrerer Einträge können Sie die API für die parallele Komprimierung mit der ParallelOptions-Klasse konfigurieren. Die verfügbaren parallelen Komprimierungsmodi sind:
- Nie - Nicht parallel komprimieren.
- Immer - Parallel komprimieren (Achtung vor möglichen Speicherproblemen).
- Auto - Automatisch entscheiden, ob parallele Komprimierung basierend auf den Einträgen verwendet werden soll.
So legen Sie den parallelen Komprimierungsmodus fest, während Sie mehrere Dateien mit der Aspose C# ZIP-Bibliothek zippen:
// For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET | |
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create)) | |
{ | |
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read)) | |
{ | |
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read)) | |
{ | |
using (var archive = new Archive()) | |
{ | |
archive.CreateEntry("alice29.txt", source1); | |
archive.CreateEntry("asyoulik.txt", source2); | |
//Define the parallelism criterion | |
var parallelOptions = new ParallelOptions | |
{ | |
ParallelCompressInMemory = ParallelCompressionMode.Always | |
}; | |
archive.Save(zipFile, | |
new ArchiveSaveOptions() | |
{ | |
ParallelOptions = parallelOptions, | |
Encoding = Encoding.ASCII, | |
ArchiveComment = "There are two poems from Canterbury corpus" | |
}); | |
} | |
} | |
} | |
} | |
Erfahren Sie mehr über die C# .NET ZIP-Bibliothek
Um Ihr Verständnis der C# ZIP-Bibliothek zu vertiefen, erkunden Sie die folgenden Ressourcen:
Probieren Sie unser Online-ZIP-Kompressionstool aus
Sie können auch mit unserer kostenlosen Online-Anwendung experimentieren, die auf Aspose.ZIP für .NET basiert, um Dateien mühelos in ZIP-Archive zu komprimieren.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie ZIP-Archive programmgesteuert in C# erstellen. Die bereitgestellten Codebeispiele zeigen, wie Sie Dateien und Ordner zu ZIP-Archiven hinzufügen, passwortgeschützte ZIP-Dateien mit ZipCrypto und AES-Verschlüsselungsmethoden erstellen und die parallele Komprimierung konfigurieren. Wenn Sie Fragen haben oder weitere Unterstützung benötigen, können Sie sich gerne über unser Forum an uns wenden.
Siehe auch