C# .NET-Bibliothek für Komprimierungsdateiformate
Kostenlose Open-Source-.NET-API für Dateiarchivierungsformate wie ZIP, GZIP, TAR und BZIP2.
Die SharpZipLib-Bibliothek ist vollständig in C# für die .NET-Plattform geschrieben. Es ist als Assembly implementiert und kann daher in andere Projekte (in jeder .NET-Sprache) integriert werden.
Es wurde ursprünglich aus der GNU Classpath-Bibliothek java.util.zip portiert, damit es mit SharpDevelop verwendet werden konnte, das eine GZIP- und ZIP-Komprimierung benötigte. Später wurden aufgrund der hohen Nachfrage der Benutzer auch die BZIP2- und Tar-Archivierung in die Bibliothek aufgenommen.
Erste Schritte mit SharpZipLib
Sie benötigen .NET Framework 4.5 oder höher, um SharpZipLib zu konfigurieren. Sobald Sie die Voraussetzungen erfüllt haben, können Sie das Repository manuell von GitHub herunterladen oder die Assembly direkt aus NuGet abrufen.
Die empfohlene Methode zum Installieren von SharpZipLib ist von NuGet, da es als NuGet-Paket verfügbar ist.
Installieren Sie SharpZipLib von NuGet
Install-Package SharpZipLib
NET-Bibliothek zum Erstellen und Extrahieren von ZIP-Dateien
SharpZipLib ermöglicht es Softwareentwicklern, eine ZIP-Datei in ihren eigenen .NET-Anwendungen zu erstellen. Entwickler können alle in einem Verzeichnis verfügbaren Dateien einfach komprimieren und sie einer einzigen ZIP-Datei zuweisen. ZIP ist eines der beliebtesten Komprimierungsdateiformate und bietet Benutzern die Möglichkeit, die Größe von Dateien zu reduzieren. Die API unterstützt auch das Extrahieren des Inhalts von ZIP-Dateien an einen Ort der Wahl des Benutzers
Dateien aus ZIP extrahieren - C#
// Open zip file
using (Stream fsInput = File.OpenRead("D:\\input.zip"))
using (var zf = new ZipFile(fsInput))
{
// Set password if required
zf.Password = "12345";
// Unzip data
foreach (ZipEntry zipEntry in zf)
{
if (!zipEntry.IsFile)
{
// Ignore directories
continue;
}
String entryFileName = zipEntry.Name;
var directoryName = "D:\\output\\test";
if (directoryName.Length > 0)
{
Directory.CreateDirectory(directoryName);
}
var buffer = new byte[4096];
using (var zipStream = zf.GetInputStream(zipEntry))
using (Stream fsOutput = File.Create("data.zip"))
{
StreamUtils.Copy(zipStream, fsOutput, buffer);
}
}
}
Erstellen Sie eine passwortgeschützte ZIP-Datei
SharpZipLib gibt Softwareentwicklern die Möglichkeit, alle Dateien in einem Ordner in eine ZIP-Datei zu komprimieren und ein Passwort für die erstellten Dateien zu definieren. Wenn Sie ZIP-Dateien ohne Schutz erstellen möchten, setzen Sie den Wert bitte auf null oder deklarieren Sie es nicht, um die Datei ohne Passwortschutz zu belassen. Es unterstützt eine große Anzahl von Dateien.
Erstellen Sie eine passwortgeschützte ZIP-Datei – C#
// Create a new ZIP file
using (FileStream fsOut = File.Create("D:\\output.zip"))
using (var zipStream = new ZipOutputStream(fsOut))
{
//0-9, 9 being the highest level of compression
zipStream.SetLevel(3);
// Set password
zipStream.Password = "12345";
// Add files
var files = Directory.GetFiles("D:\\sample");
foreach (var filename in files)
{
var fi = new FileInfo(filename);
// Make the name in zip based on the folder
var entryName = filename.Substring(1);
// Remove drive from name and fixe slash direction
entryName = ZipEntry.CleanName(entryName);
var newEntry = new ZipEntry(entryName);
// Note the zip format stores 2 second granularity
newEntry.DateTime = fi.LastWriteTime;
newEntry.Size = fi.Length;
zipStream.PutNextEntry(newEntry);
var buffer = new byte[4096];
using (FileStream fsInput = File.OpenRead(filename))
{
StreamUtils.Copy(fsInput, zipStream, buffer);
}
zipStream.CloseEntry();
}
}