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

C# .NET-bibliotek för komprimeringsfilformat

Open Source Gratis .NET API för filarkiveringsformat som ZIP, GZIP, TAR och BZIP2.

SharpZipLib-biblioteket är skrivet helt i C# för .NET-plattformen. Den är implementerad som en sammansättning och så att du kan integrera den i andra projekt (på vilket .NET-språk som helst).

Det portades ursprungligen från GNU Classpath java.util.zip-biblioteket så att det kunde användas med SharpDevelop, som behövde GZIP- och ZIP-komprimering. Senare på grund av hög efterfrågan från användare inkluderades även BZIP2- och Tar-arkivering i biblioteket.

Previous Next

Komma igång med SharpZipLib

Du måste ha .NET Framework 4.5 eller högre för att kunna konfigurera SharpZipLib. När du har uppfyllt förutsättningarna kan du ladda ner förvaret manuellt från GitHub eller direkt hämta sammansättningen från NuGet.

Det rekommenderade sättet att installera SharpZipLib är från NuGet eftersom det är tillgängligt som ett NuGet-paket

Installera SharpZipLib från NuGet

 Install-Package SharpZipLib

NET-bibliotek för att skapa och extrahera ZIP-filer

SharpZipLib gör det möjligt för mjukvaruutvecklare att skapa en ZIP-fil i sina egna .NET-applikationer. Utvecklare kan enkelt komprimera alla tillgängliga filer i en katalog och tilldela dem till en enda zip-fil. ZIP är ett av de mest populära komprimeringsfilformaten och ger användarna möjlighet att minska storleken på filer. API:et stöder också extrahering av innehållet i ZIP-filer till en plats som användaren väljer

Extrahera filer från 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);
    }
  }
}

Skapa en lösenordsskyddad ZIP-fil

SharpZipLib ger mjukvaruutvecklare möjligheten att komprimera alla filer i en mapp till en ZIP-fil och definiera ett lösenord för de skapade filerna. Om du vill skapa ZIP-filer utan skydd, ställ in dess värde till null eller deklarera inte att filen lämnas utan lösenordsskydd. Den stöder ett stort antal filer.

Skapa en lösenordsskyddad 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();
  }
}
 Svenska