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.
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();
}
}