Βιβλιοθήκη C# .NET για μορφές αρχείων συμπίεσης
Δωρεάν .NET API ανοιχτού κώδικα για μορφές αρχειοθέτησης αρχείων όπως ZIP, GZIP, TAR και BZIP2.
Η βιβλιοθήκη SharpZipLib είναι γραμμένη εξ ολοκλήρου σε C# για την πλατφόρμα .NET. Υλοποιείται ως assembly και έτσι μπορείτε να το ενσωματώσετε σε άλλα έργα (σε οποιαδήποτε γλώσσα .NET).
Αρχικά μεταφέρθηκε από τη βιβλιοθήκη GNU Classpath java.util.zip, ώστε να μπορεί να χρησιμοποιηθεί με το SharpDevelop, το οποίο χρειαζόταν συμπίεση GZIP & ZIP. Αργότερα, λόγω της μεγάλης ζήτησης των χρηστών, η αρχειοθέτηση BZIP2 και Tar συμπεριλήφθηκαν επίσης στη βιβλιοθήκη.
Ξεκινώντας με το SharpZipLib
Πρέπει να διαθέτετε .NET Framework 4.5 ή νεότερη έκδοση για να διαμορφώσετε το SharpZipLib. Αφού πληροίτε τις προϋποθέσεις, μπορείτε να πραγματοποιήσετε μη αυτόματη λήψη του αποθετηρίου από το GitHub ή απευθείας λήψη της διάταξης από το NuGet.
Ο προτεινόμενος τρόπος εγκατάστασης του SharpZipLib είναι από το NuGet καθώς είναι διαθέσιμος ως Πακέτο NuGet.
Εγκαταστήστε το SharpZipLib από το NuGet
Install-Package SharpZipLib
NET Library για δημιουργία και εξαγωγή αρχείων ZIP
Το SharpZipLib επιτρέπει στους προγραμματιστές λογισμικού να δημιουργήσουν ένα αρχείο ZIP μέσα στις δικές τους εφαρμογές .NET. Οι προγραμματιστές μπορούν εύκολα να συμπιέσουν όλα τα αρχεία που είναι διαθέσιμα μέσα σε έναν κατάλογο και να τα αντιστοιχίσουν σε ένα μόνο αρχείο zip. Το ZIP είναι μια από τις πιο δημοφιλείς μορφές αρχείων συμπίεσης και δίνει στους χρήστες τη δυνατότητα να μειώσουν το μέγεθος των αρχείων. Το API υποστηρίζει επίσης την εξαγωγή του περιεχομένου των αρχείων ZIP σε ένα μέρος της επιλογής του χρήστη
Εξαγωγή αρχείων από 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);
}
}
}
Δημιουργήστε ένα αρχείο ZIP που προστατεύεται με κωδικό πρόσβασης
Το SharpZipLib δίνει στους προγραμματιστές λογισμικού τη δυνατότητα να συμπιέσουν όλα τα αρχεία μέσα σε ένα φάκελο σε ένα αρχείο ZIP και να ορίσουν έναν κωδικό πρόσβασης για τα αρχεία που δημιουργούνται. Εάν θέλετε να δημιουργήσετε αρχεία ZIP χωρίς προστασία, ορίστε την τιμή του ως μηδενική ή μην το δηλώσετε ώστε να αποχωρήσει από το αρχείο χωρίς προστασία με κωδικό πρόσβασης. Υποστηρίζει μεγάλο αριθμό αρχείων.
Δημιουργήστε ένα αρχείο ZIP προστατευμένο με κωδικό πρόσβασης - 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();
}
}