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

Безкоштовний .NET API з відкритим вихідним кодом для таких форматів архіваторів файлів, як 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();
  }
}
 Українська