1. Producten
  2.   Compressie
  3.   .NET
  4.   SharpZipLib
 
  

C# .NET-bibliotheek voor compressiebestandsindelingen

Open Source Gratis .NET API voor bestandsarchiveringsindelingen zoals ZIP, GZIP, TAR en BZIP2.

SharpZipLib-bibliotheek is volledig in C# geschreven voor het .NET-platform. Het wordt geïmplementeerd als een assembly en dus kunt u het in andere projecten opnemen (in elke .NET-taal).

Het was oorspronkelijk overgezet vanuit de GNU Classpath java.util.zip-bibliotheek, zodat het kon worden gebruikt met SharpDevelop, waarvoor GZIP- en ZIP-compressie nodig was. Later, vanwege de grote vraag van gebruikers, werden de BZIP2- en Tar-archivering ook in de bibliotheek opgenomen.

Previous Next

Aan de slag met SharpZipLib

U moet .NET Framework 4.5 of hoger hebben om SharpZipLib te configureren. Zodra je aan de vereisten hebt voldaan, kun je de repository handmatig downloaden van GitHub of de assembly rechtstreeks ophalen van de NuGet.

De aanbevolen manier om SharpZipLib te installeren is van NuGet, aangezien het beschikbaar is als een NuGet-pakket

Installeer SharpZipLib van NuGet

 Install-Package SharpZipLib

NET-bibliotheek om ZIP-bestanden te maken en uit te pakken

Met SharpZipLib kunnen softwareontwikkelaars een ZIP-bestand maken in hun eigen .NET-applicaties. Ontwikkelaars kunnen eenvoudig alle bestanden die beschikbaar zijn in een map comprimeren en ze toewijzen aan een enkel zipbestand. ZIP is een van de meest populaire compressiebestandsindelingen en biedt gebruikers de mogelijkheid om de grootte van bestanden te verkleinen. De API ondersteunt ook het extraheren van de inhoud van ZIP-bestanden naar een plaats naar keuze van de gebruiker

Bestanden uitpakken uit ZIP - 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);
    }
  }
}

Maak een met een wachtwoord beveiligd ZIP-bestand

SharpZipLib geeft softwareontwikkelaars de mogelijkheid om alle bestanden in een map in een ZIP-bestand te comprimeren en een wachtwoord voor de gemaakte bestanden te definiëren. Als u ZIP-bestanden zonder beveiliging wilt maken, stel dan de waarde in op null of declareer het niet om het bestand zonder wachtwoordbeveiliging te verlaten. Het ondersteunt een groot aantal bestanden.

Maak een met een wachtwoord beveiligd ZIP-bestand - 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();
  }
}
 Dutch