Biblioteka C# .NET dla formatów plików kompresji
Darmowy interfejs API .NET typu Open Source dla formatów archiwizacji plików, takich jak ZIP, GZIP, TAR i BZIP2.
Biblioteka SharpZipLib jest w całości napisana w języku C# dla platformy .NET. Jest zaimplementowany jako zestaw, dzięki czemu można go włączyć do innych projektów (w dowolnym języku .NET).
Pierwotnie został przeniesiony z biblioteki GNU Classpath java.util.zip, aby mógł być używany z SharpDevelop, który wymagał kompresji GZIP i ZIP. Później ze względu na duże zapotrzebowanie użytkowników do biblioteki włączono również archiwizację BZIP2 i Tar.
Pierwsze kroki z SharpZipLib
Aby skonfigurować SharpZipLib, musisz mieć .NET Framework 4.5 lub nowszy. Po spełnieniu wymagań wstępnych możesz ręcznie pobrać repozytorium z GitHub lub bezpośrednio pobrać zestaw z NuGet.
Zalecanym sposobem instalacji SharpZipLib jest korzystanie z NuGet, ponieważ jest on dostępny jako Pakiet NuGet.
Zainstaluj SharpZipLib z NuGet
Install-Package SharpZipLib
Biblioteka NET do tworzenia i wyodrębniania plików ZIP
SharpZipLib umożliwia programistom tworzenie plików ZIP w ich własnych aplikacjach .NET. Programiści mogą łatwo skompresować wszystkie pliki dostępne w katalogu i przypisać je do jednego pliku zip. ZIP jest jednym z najpopularniejszych formatów plików kompresji i daje użytkownikom możliwość zmniejszenia rozmiaru plików. API obsługuje również rozpakowywanie zawartości plików ZIP w wybrane przez użytkownika miejsce
Wyodrębnij pliki z 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);
}
}
}
Utwórz plik ZIP chroniony hasłem
SharpZipLib daje programistom możliwość skompresowania wszystkich plików w folderze do pliku ZIP i zdefiniowania hasła dla tworzonych plików. Jeśli chcesz tworzyć pliki ZIP bez ochrony, ustaw jego wartość na null lub nie deklaruj pozostawienia pliku bez ochrony hasłem. Obsługuje dużą liczbę plików.
Utwórz plik ZIP chroniony hasłem — 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();
}
}