Libreria C# .NET per formati di file di compressione
API .NET gratuita open source per formati di archiviazione file come ZIP, GZIP, TAR e BZIP2.
La libreria SharpZipLib è scritta interamente in C# per la piattaforma .NET. Viene implementato come un assembly e quindi puoi incorporarlo in altri progetti (in qualsiasi linguaggio .NET).
È stato originariamente portato dalla libreria GNU Classpath java.util.zip in modo che potesse essere utilizzato con SharpDevelop, che richiedeva la compressione GZIP e ZIP. Successivamente, a causa dell'elevata domanda degli utenti, nella libreria sono state incluse anche l'archiviazione BZIP2 e Tar.
Guida introduttiva a SharpZipLib
È necessario disporre di .NET Framework 4.5 o superiore per configurare SharpZipLib. Una volta soddisfatti i prerequisiti, puoi scaricare manualmente il repository da GitHub o recuperare direttamente l'assembly da NuGet.
Il modo consigliato per installare SharpZipLib è da NuGet poiché è disponibile come Pacchetto NuGet.
Installa SharpZipLib da NuGet
Install-Package SharpZipLib
NET Library per creare ed estrarre file ZIP
SharpZipLib consente agli sviluppatori di software di creare un file ZIP all'interno delle proprie applicazioni .NET. Gli sviluppatori possono facilmente comprimere tutti i file disponibili all'interno di una directory e assegnarli in un unico file zip. ZIP è uno dei formati di file di compressione più popolari e offre agli utenti la possibilità di ridurre le dimensioni dei file. L'API supporta anche l'estrazione del contenuto dei file ZIP in un luogo a scelta dell'utente
Estrai file da 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);
}
}
}
Crea un file ZIP protetto da password
SharpZipLib offre agli sviluppatori di software la possibilità di comprimere tutti i file all'interno di una cartella in un file ZIP e definire una password per i file creati. Se vuoi creare file ZIP senza protezione, imposta il suo valore su null o non dichiararlo per lasciare il file senza alcuna protezione con password. Supporta un gran numero di file.
Crea un file ZIP protetto da password - 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();
}
}