Βιβλιοθήκη C# .NET για μορφές αρχείων συμπίεσης

Δωρεάν .NET API ανοιχτού κώδικα για μορφές αρχειοθέτησης αρχείων όπως ZIP, GZIP, TAR και BZIP2.

Η βιβλιοθήκη SharpZipLib είναι γραμμένη εξ ολοκλήρου σε C# για την πλατφόρμα .NET. Υλοποιείται ως assembly και έτσι μπορείτε να το ενσωματώσετε σε άλλα έργα (σε οποιαδήποτε γλώσσα .NET).

Αρχικά μεταφέρθηκε από τη βιβλιοθήκη GNU Classpath java.util.zip, ώστε να μπορεί να χρησιμοποιηθεί με το SharpDevelop, το οποίο χρειαζόταν συμπίεση GZIP & ZIP. Αργότερα, λόγω της μεγάλης ζήτησης των χρηστών, η αρχειοθέτηση BZIP2 και Tar συμπεριλήφθηκαν επίσης στη βιβλιοθήκη.

Previous Next

Ξεκινώντας με το 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();
  }
}
 Ελληνικά