C# .NET-bibliotheek voor compressiebestandsindelingen
Open Source Gratis .NET API voor bestandsarchiveringsindelingen zoals ZIP, GZIP, TAR en BZIP2.
SharpZipLib-bibliotheek is volledig in C# geschreven voor het .NET-platform. Het wordt geïmplementeerd als een assembly en dus kunt u het in andere projecten opnemen (in elke .NET-taal).
Het was oorspronkelijk overgezet vanuit de GNU Classpath java.util.zip-bibliotheek, zodat het kon worden gebruikt met SharpDevelop, waarvoor GZIP- en ZIP-compressie nodig was. Later, vanwege de grote vraag van gebruikers, werden de BZIP2- en Tar-archivering ook in de bibliotheek opgenomen.
Aan de slag met SharpZipLib
U moet .NET Framework 4.5 of hoger hebben om SharpZipLib te configureren. Zodra je aan de vereisten hebt voldaan, kun je de repository handmatig downloaden van GitHub of de assembly rechtstreeks ophalen van de NuGet.
De aanbevolen manier om SharpZipLib te installeren is van NuGet, aangezien het beschikbaar is als een NuGet-pakket.
Installeer SharpZipLib van NuGet
Install-Package SharpZipLib
NET-bibliotheek om ZIP-bestanden te maken en uit te pakken
Met SharpZipLib kunnen softwareontwikkelaars een ZIP-bestand maken in hun eigen .NET-applicaties. Ontwikkelaars kunnen eenvoudig alle bestanden die beschikbaar zijn in een map comprimeren en ze toewijzen aan een enkel zipbestand. ZIP is een van de meest populaire compressiebestandsindelingen en biedt gebruikers de mogelijkheid om de grootte van bestanden te verkleinen. De API ondersteunt ook het extraheren van de inhoud van ZIP-bestanden naar een plaats naar keuze van de gebruiker
Bestanden uitpakken uit 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);
}
}
}
Maak een met een wachtwoord beveiligd ZIP-bestand
SharpZipLib geeft softwareontwikkelaars de mogelijkheid om alle bestanden in een map in een ZIP-bestand te comprimeren en een wachtwoord voor de gemaakte bestanden te definiëren. Als u ZIP-bestanden zonder beveiliging wilt maken, stel dan de waarde in op null of declareer het niet om het bestand zonder wachtwoordbeveiliging te verlaten. Het ondersteunt een groot aantal bestanden.
Maak een met een wachtwoord beveiligd ZIP-bestand - 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();
}
}