1. Produkter
  2.   Komprimering
  3.   .NET
  4.   SharpZipLib
 
  

C# .NET-bibliotek for komprimeringsfilformater

Open Source Gratis .NET API for filarkiveringsformater som ZIP, GZIP, TAR og BZIP2.

SharpZipLib-biblioteket er skrevet utelukkende i C# for .NET-plattformen. Den er implementert som en sammenstilling, og du kan derfor integrere den i andre prosjekter (på hvilket som helst .NET-språk).

Det ble opprinnelig portert fra GNU Classpath java.util.zip-biblioteket slik at det kunne brukes med SharpDevelop, som trengte GZIP- og ZIP-komprimering. Senere på grunn av høy etterspørsel fra brukere, ble BZIP2- og Tar-arkivering også inkludert i biblioteket.

Previous Next

Komme i gang med SharpZipLib

Du må ha .NET Framework 4.5 eller nyere for å konfigurere SharpZipLib. Når du har oppfylt forutsetningene, kan du manuelt laste ned depotet fra GitHub eller hente sammenstillingen direkte fra NuGet.

Den anbefalte måten å installere SharpZipLib på er fra NuGet siden den er tilgjengelig som en NuGet-pakke

Installer SharpZipLib fra NuGet

 Install-Package SharpZipLib

NET-bibliotek for å lage og pakke ut ZIP-filer

SharpZipLib gjør det mulig for programvareutviklere å lage en ZIP-fil i sine egne .NET-applikasjoner. Utviklere kan enkelt komprimere alle tilgjengelige filer i en katalog og tilordne dem til en enkelt zip-fil. ZIP er et av de mest populære komprimeringsfilformatene og gir brukerne muligheten til å redusere størrelsen på filer. API-en støtter også utpakking av innholdet i ZIP-filer til et sted etter brukerens valg

Pakk ut filer fra 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);
    }
  }
}

Opprett en passordbeskyttet ZIP-fil

SharpZipLib gir programvareutviklere muligheten til å komprimere alle filene i en mappe til en ZIP-fil og definere et passord for de opprettede filene. Hvis du vil lage ZIP-filer uten beskyttelse, må du sette verdien til null eller ikke erklære at filen skal være uten passordbeskyttelse. Den støtter et stort antall filer.

Lag en passordbeskyttet ZIP-fil - 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();
  }
}
 Norsk