1. Các sản phẩm
  2.   Nén
  3.   .NET
  4.   SharpZipLib
 
  

Thư viện C # .NET cho các định dạng tệp nén

API .NET miễn phí mã nguồn mở cho các định dạng trình lưu trữ tệp như ZIP, GZIP, TAR & BZIP2.

Thư viện SharpZipLib được viết hoàn toàn bằng C # cho nền tảng .NET. Nó được thực hiện như một hợp ngữ và vì vậy bạn có thể kết hợp nó vào các dự án khác (bằng bất kỳ ngôn ngữ .NET nào).

Ban đầu nó được chuyển từ thư viện GNU Classpath java.util.zip để có thể sử dụng với SharpDevelop, cần nén GZIP & ZIP. Sau đó do nhu cầu của người dùng cao, kho lưu trữ BZIP2 và Tar cũng được đưa vào thư viện.

Previous Next

Bắt đầu với SharpZipLib

Bạn cần có .NET Framework 4.5 trở lên để định cấu hình SharpZipLib. Khi bạn đã đáp ứng các điều kiện tiên quyết, bạn có thể tải xuống kho lưu trữ theo cách thủ công từ GitHub hoặc trực tiếp tìm nạp tập hợp từ NuGet.

Cách được khuyến nghị để cài đặt SharpZipLib là từ NuGet vì nó có sẵn dưới dạng Gói NuGet

Cài đặt SharpZipLib từ NuGet

 Install-Package SharpZipLib

Thư viện NET để tạo và giải nén tệp ZIP

SharpZipLib cho phép các nhà phát triển phần mềm tạo tệp ZIP bên trong các ứng dụng .NET của riêng họ. Các nhà phát triển có thể dễ dàng nén tất cả các tệp có sẵn trong một thư mục và gán chúng vào một tệp zip duy nhất. ZIP là một trong những định dạng tệp nén phổ biến nhất và cung cấp cho người dùng cơ sở để giảm kích thước tệp. API cũng hỗ trợ trích xuất nội dung của các tệp ZIP đến một nơi mà người dùng lựa chọn

Giải nén tệp từ 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);
    }
  }
}

Tạo tệp ZIP được bảo vệ bằng mật khẩu

SharpZipLib cung cấp cho các nhà phát triển phần mềm khả năng nén tất cả các tệp bên trong một thư mục thành tệp ZIP và xác định mật khẩu cho các tệp đã tạo. Nếu bạn muốn tạo tệp ZIP mà không có bảo vệ, vui lòng đặt giá trị của nó thành null hoặc không khai báo để thoát khỏi tệp mà không có bất kỳ bảo vệ bằng mật khẩu nào. Nó hỗ trợ một số lượng lớn các tệp.

Tạo tệp ZIP được bảo vệ bằng mật khẩu - 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();
  }
}
 Tiếng Việt