ספריית C# .NET עבור פורמטי קבצי דחיסה

קוד פתוח בחינם .NET API עבור פורמטים לארכיון קבצים כמו ZIP, GZIP, TAR ו-BZIP2.

ספריית SharpZipLib כתובה כולה ב-C# עבור פלטפורמת NET. הוא מיושם כמכלול וכך ניתן לשלב אותו בפרויקטים אחרים (בכל שפת 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 ליצירה וחילוץ של קבצי 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 ללא הגנה, הגדר את הערך שלו ל-null או אל תצהיר שהוא ישאיר את הקובץ ללא כל הגנת סיסמה. הוא תומך במספר רב של קבצים.

צור קובץ 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();
  }
}
 עִברִית