ZIP in C# erstellen

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:

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:

  1. Erstellen Sie ein FileStream-Objekt für das Ausgab ZIP-Archiv.
  2. Öffnen Sie die Quelldatei als FileStream-Objekt.
  3. Instanziieren Sie die Archive-Klasse.
  4. Fügen Sie die Datei mit der Archive.CreateEntry(string, FileStream)-Methode zum Archiv hinzu.
  5. 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:

  1. Erstellen Sie ein FileStream-Objekt für das Ausgab ZIP-Archiv.
  2. Instanziieren Sie die Archive-Klasse.
  3. Verwenden Sie die DirectoryInfo-Klasse, um den Ordner anzugeben, den Sie zippen möchten.
  4. Fügen Sie den Ordner mit der Archive.CreateEntries(DirectoryInfo)-Methode zum ZIP hinzu.
  5. 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

Unrar oder Dateien mit C# extrahierenDateien in ZIP-Archiven mit C# entpacken7z (7-Zip) Archive in C# .NET erstellen
7z (7zip) Datei in C# .NET öffnen oder extrahierenGZip-Archive mit C# erstellen und extrahierenRAR-Dateien in ZIP-Archive in C# konvertieren
ZIP-Archive in TAR in C# konvertierenEin flaches ZIP-Archiv in C# erstellenErstellen eines ausführbaren selbstextrahierenden Archivs in C#
TAR.GZ- und TAR.XZ-Dateien in C# erstellenDateien in einem ZIP-Archiv in C# löschenVerschachtelte ZIP-Archive in C# extrahieren
Mehrere ZIP- oder TAR-Archive in C# zusammenführenSo erstellen Sie ZIP-Dateien7z online extrahieren