Biblioteca C# .NET pentru formate de fișiere de compresie
API .NET gratuit cu sursă deschisă pentru formate de arhivare de fișiere precum ZIP, GZIP, TAR și BZIP2.
Biblioteca SharpZipLib este scrisă în întregime în C# pentru platforma .NET. Este implementat ca un ansamblu și astfel îl puteți încorpora în alte proiecte (în orice limbaj .NET).
A fost portat inițial din biblioteca GNU Classpath java.util.zip, astfel încât să poată fi utilizat cu SharpDevelop, care avea nevoie de compresie GZIP și ZIP. Ulterior, din cauza cererii mari a utilizatorilor, arhivarea BZIP2 și tar au fost incluse și în bibliotecă.
Noțiuni introductive cu SharpZipLib
Trebuie să aveți .NET Framework 4.5 sau o versiune superioară pentru a configura SharpZipLib. Odată ce îndepliniți cerințele preliminare, puteți descărca manual depozitul de pe GitHub sau preluați direct ansamblul din NuGet.
Modul recomandat de a instala SharpZipLib este de la NuGet, deoarece este disponibil ca Pachet NuGet.
Instalați SharpZipLib din NuGet
Install-Package SharpZipLib
Biblioteca NET pentru a crea și extrage fișiere ZIP
SharpZipLib permite dezvoltatorilor de software să creeze un fișier ZIP în propriile aplicații .NET. Dezvoltatorii pot comprima cu ușurință toate fișierele disponibile într-un director și le pot atribui într-un singur fișier zip. ZIP este unul dintre cele mai populare formate de fișiere de compresie și oferă utilizatorilor posibilitatea de a reduce dimensiunea fișierelor. API-ul acceptă, de asemenea, extragerea conținutului fișierelor ZIP într-un loc la alegerea utilizatorului
Extrageți fișiere din 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ți un fișier ZIP protejat cu parolă
SharpZipLib oferă dezvoltatorilor de software posibilitatea de a comprima toate fișierele dintr-un folder într-un fișier ZIP și de a defini o parolă pentru fișierele create. Dacă doriți să creați fișiere ZIP fără protecție, vă rugăm să setați valoarea acestuia la null sau să nu declarați ca să lase fișierul fără protecție prin parolă. Acceptă un număr mare de fișiere.
Creați un fișier ZIP protejat cu parolă - 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();
}
}