1. Produtos
  2.   Compressão
  3.   .NET
  4.   SharpZipLib
 
  

Biblioteca C# .NET para formatos de arquivo de compactação

API .NET gratuita de código aberto para formatos de arquivamento de arquivos como ZIP, GZIP, TAR e BZIP2.

A biblioteca SharpZipLib foi escrita inteiramente em C# para a plataforma .NET. Ele é implementado como um assembly e, portanto, você pode incorporá-lo a outros projetos (em qualquer linguagem .NET).

Ele foi originalmente portado da biblioteca java.util.zip do GNU Classpath para que pudesse ser usado com o SharpDevelop, que precisava de compactação GZIP e ZIP. Mais tarde, devido à alta demanda dos usuários, o arquivamento BZIP2 e Tar também foram incluídos na biblioteca.

Previous Next

Introdução ao SharpZipLib

Você precisa ter o .NET Framework 4.5 ou superior para configurar o SharpZipLib. Depois de atender aos pré-requisitos, você pode baixar manualmente o repositório do GitHub ou buscar diretamente o assembly do NuGet.

A maneira recomendada de instalar o SharpZipLib é do NuGet, pois está disponível como um Pacote NuGet

Instale o SharpZipLib do NuGet

 Install-Package SharpZipLib

NET Library para criar e extrair arquivos ZIP

SharpZipLib permite que desenvolvedores de software criem um arquivo ZIP dentro de seus próprios aplicativos .NET. Os desenvolvedores podem compactar facilmente todos os arquivos disponíveis em um diretório e atribuí-los em um único arquivo zip. O ZIP é um dos formatos de arquivo de compactação mais populares e oferece aos usuários a facilidade de reduzir o tamanho dos arquivos. A API também suporta a extração do conteúdo de arquivos ZIP para um local de escolha do usuário

Extraia arquivos de 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);
    }
  }
}

Criar um arquivo ZIP protegido por senha

O SharpZipLib oferece aos desenvolvedores de software a capacidade de compactar todos os arquivos dentro de uma pasta em um arquivo ZIP e definir uma senha para os arquivos criados. Se você deseja criar arquivos ZIP sem proteção, defina seu valor como nulo ou não o declare para deixar o arquivo sem proteção por senha. Ele suporta um grande número de arquivos.

Crie um arquivo ZIP protegido por senha - 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();
  }
}
 Português