1. Товары
  2.   Сжатие
  3.   .NET
  4.   SharpZipLib
 
  

Библиотека C# .NET для форматов файлов сжатия

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

Библиотека SharpZipLib полностью написана на C# для платформы .NET. Он реализован в виде сборки, поэтому вы можете включать его в другие проекты (на любом языке .NET).

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

Previous Next

Начало работы с SharpZipLib

Для настройки SharpZipLib вам потребуется .NET Framework 4.5 или выше. Выполнив все необходимые условия, вы можете вручную загрузить репозиторий с 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-файлы без защиты, установите для него значение null или не объявляйте его, чтобы оставить файл без какой-либо защиты паролем. Он поддерживает большое количество файлов.

Создать защищенный паролем 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();
  }
}
 Русский