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.
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();
}
}