ไลบรารี C# .NET สำหรับรูปแบบไฟล์บีบอัด

Open Source Free .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 Package 

ติดตั้ง 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 โดยไม่มีการป้องกัน โปรดตั้งค่าเป็น 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();
  }
}
 ไทย