1. Produkte
  2.   Kompression
  3.   .NET
  4.   SharpZipLib
 
  

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.

Previous Next

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();
  }
}
 Deutsch