C# .NET библиотека за компресирани файлови формати

Безплатен .NET API с отворен код за файлови архивни формати като ZIP, GZIP, TAR и BZIP2.

Библиотеката SharpZipLib е написана изцяло на C# за платформата .NET. Той е реализиран като сборка и така можете да го включите в други проекти (на всеки .NET език).

Първоначално беше пренесен от библиотеката java.util.zip на GNU Classpath, за да може да се използва с SharpDevelop, който се нуждаеше от GZIP & ZIP компресия. По-късно, поради голямото търсене на потребителите, BZIP2 и Tar архивирането също бяха включени в библиотеката.

Previous Next

Първи стъпки с SharpZipLib

Трябва да имате .NET Framework 4.5 или по-нова версия, за да конфигурирате SharpZipLib. След като изпълните предварителните условия, можете ръчно да изтеглите хранилището от GitHub или директно да изтеглите сборката от NuGet.

Препоръчителният начин за инсталиране на SharpZipLib е от NuGet, тъй като е наличен като NuGet пакет

Инсталирайте SharpZipLib от NuGet

 Install-Package SharpZipLib

NET библиотека за създаване и извличане на ZIP файлове

SharpZipLib позволява на разработчиците на софтуер да създават ZIP файл в собствените си .NET приложения. Разработчиците могат лесно да компресират всички налични файлове в директория и да ги присвоят в един zip файл. ZIP е един от най-популярните файлови формати за компресиране и дава възможност на потребителите да намалят размера на файловете. API също поддържа извличане на съдържанието на ZIP файлове на място по избор на потребителя

Извличане на файлове от 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);
    }
  }
}

Създайте ZIP файл, защитен с парола

SharpZipLib дава възможност на разработчиците на софтуер да компресират всички файлове в папка в ZIP файл и да дефинират парола за създадените файлове. Ако искате да създавате ZIP файлове без защита, моля, задайте стойността му на нула или не го декларирайте, за да оставите файла без защита с парола. Поддържа голям брой файлове.

Създаване на защитен с парола ZIP файл - 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();
  }
}
 Български