Biblioteca C# .NET para formatos de archivo de compresión
API .NET gratuita de código abierto para formatos de archivador de archivos como ZIP, GZIP, TAR y BZIP2.
La biblioteca SharpZipLib está escrita completamente en C# para la plataforma .NET. Se implementa como un ensamblado por lo que puedes incorporarlo a otros proyectos (en cualquier lenguaje .NET).
Originalmente fue portado desde la biblioteca GNU Classpath java.util.zip para que pudiera usarse con SharpDevelop, que necesitaba compresión GZIP y ZIP. Más tarde, debido a la gran demanda de los usuarios, el archivo BZIP2 y Tar también se incluyeron en la biblioteca.
Primeros pasos con SharpZipLib
Debe tener .NET Framework 4.5 o superior para configurar SharpZipLib. Una vez que haya cumplido con los requisitos previos, puede descargar manualmente el repositorio desde GitHub o obtener directamente el ensamblado de NuGet.
La forma recomendada de instalar SharpZipLib es desde NuGet, ya que está disponible como un Paquete NuGet.
Instalar SharpZipLib desde NuGet
Install-Package SharpZipLib
NET Library para crear y extraer archivos ZIP
SharpZipLib permite a los desarrolladores de software crear un archivo ZIP dentro de sus propias aplicaciones .NET. Los desarrolladores pueden comprimir fácilmente todos los archivos disponibles dentro de un directorio y asignarlos a un solo archivo zip. ZIP es uno de los formatos de archivo de compresión más populares y brinda a los usuarios la posibilidad de reducir el tamaño de los archivos. La API también admite la extracción del contenido de los archivos ZIP en el lugar que elija el usuario.
Extraer archivos 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);
}
}
}
Crear un archivo ZIP protegido con contraseña
SharpZipLib brinda a los desarrolladores de software la capacidad de comprimir todos los archivos dentro de una carpeta en un archivo ZIP y definir una contraseña para los archivos creados. Si desea crear archivos ZIP sin protección, establezca su valor en nulo o no lo declare para dejar el archivo sin protección con contraseña. Admite una gran cantidad de archivos.
Cree un archivo ZIP protegido con contraseña - 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();
}
}