C# .NET-bibliotek för komprimeringsfilformat
Open Source Gratis .NET API för filarkiveringsformat som ZIP, GZIP, TAR och BZIP2.
SharpZipLib-biblioteket är skrivet helt i C# för .NET-plattformen. Den är implementerad som en sammansättning och så att du kan integrera den i andra projekt (på vilket .NET-språk som helst).
Det portades ursprungligen från GNU Classpath java.util.zip-biblioteket så att det kunde användas med SharpDevelop, som behövde GZIP- och ZIP-komprimering. Senare på grund av hög efterfrågan från användare inkluderades även BZIP2- och Tar-arkivering i biblioteket.
Komma igång med SharpZipLib
Du måste ha .NET Framework 4.5 eller högre för att kunna konfigurera SharpZipLib. När du har uppfyllt förutsättningarna kan du ladda ner förvaret manuellt från GitHub eller direkt hämta sammansättningen från NuGet.
Det rekommenderade sättet att installera SharpZipLib är från NuGet eftersom det är tillgängligt som ett NuGet-paket.
Installera SharpZipLib från NuGet
Install-Package SharpZipLib
NET-bibliotek för att skapa och extrahera ZIP-filer
SharpZipLib gör det möjligt för mjukvaruutvecklare att skapa en ZIP-fil i sina egna .NET-applikationer. Utvecklare kan enkelt komprimera alla tillgängliga filer i en katalog och tilldela dem till en enda zip-fil. ZIP är ett av de mest populära komprimeringsfilformaten och ger användarna möjlighet att minska storleken på filer. API:et stöder också extrahering av innehållet i ZIP-filer till en plats som användaren väljer
Extrahera filer från 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);
}
}
}
Skapa en lösenordsskyddad ZIP-fil
SharpZipLib ger mjukvaruutvecklare möjligheten att komprimera alla filer i en mapp till en ZIP-fil och definiera ett lösenord för de skapade filerna. Om du vill skapa ZIP-filer utan skydd, ställ in dess värde till null eller deklarera inte att filen lämnas utan lösenordsskydd. Den stöder ett stort antal filer.
Skapa en lösenordsskyddad ZIP-fil - 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();
}
}