Trong bài đăng trước, bạn đã học các cách khác nhau để nén tệp và thư mục vào kho lưu trữ ZIP bằng cách sử dụng Aspose.ZIP cho .NET. Trong bài đăng này, tôi sẽ chỉ cho bạn cách trích xuất hoặc giải nén tệp ZIP trong C#. Chúng tôi cũng sẽ đề cập đến cách giải nén các kho lưu trữ ZIP được bảo vệ bằng mật khẩu hoặc mã hóa AES trong C#. Bài viết này được chia thành các phần sau:
- API C# để giải nén tệp - Tải xuống miễn phí
- Giải nén tệp ZIP trong C#
- Giải nén tệp ZIP được bảo vệ bằng mật khẩu
- Giải nén các tệp ZIP được mã hóa AES trong C#
API C# để giải nén tệp ZIP - Tải xuống miễn phí
Trước khi chúng tôi bắt đầu, hãy đảm bảo rằng bạn đã đã tải xuống và đã tham chiếu Aspose.ZIP cho .NET hoặc đã cài đặt gói của nó bằng Trình quản lý gói NuGet trong dự án của bạn.
Giải nén tệp ZIP trong C# .NET
Quá trình giải nén các tệp ZIP có thể đạt được theo hai cách:
- Giải nén riêng từng tệp trong ZIP
- Giải nén tập tin vào một thư mục được chỉ định
Trong phương pháp đầu tiên, bạn có thể truy cập và giải nén rõ ràng từng tệp trong kho lưu trữ ZIP. Hơn nữa, bạn có thể in tiến trình của quá trình trích xuất. Trong khi đó, phương pháp thứ hai chỉ đơn giản là giải nén các tệp vào thư mục đã chỉ định.
Giải nén từng tệp trong ZIP trong C#
Sau đây là các bước để truy cập và giải nén tệp và in tiến trình trích xuất trong C#:
- Mở kho lưu trữ ZIP vào đối tượng FileStream.
- Tạo và khởi tạo phiên bản của Archive với đối tượng FileStream.
- Truy cập các tệp trong ZIP bằng bộ sưu tập Archive.Entries.
- Đặt trình xử lý sự kiện ArchiveEntry.ExtractionProgressed để in tiến trình trích xuất.
- Giải nén/giải nén tệp bằng phương pháp ArchiveEntry.Extract(string).
Mẫu mã sau đây cho biết cách giải nén các tệp trong kho lưu trữ ZIP bằng C#.
// Mở tệp ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Truy cập từng mục trong kho lưu trữ ZIP
for (int i = 0; i < archive.Entries.Count; i++)
{
int percentReady = 0;
// Tiến trình trích xuất nhật ký vào bảng điều khiển.
archive.Entries[i].ExtractionProgressed += (s, e) =>
{
int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
if (percent > percentReady)
{
Console.WriteLine(string.Format("{0}% decompressed", percent));
percentReady = percent;
}
};
// Trích xuất nội dung của mục vào đĩa.
archive.Entries[i].Extract(archive.Entries[i].Name);
}
}
}
C# Giải nén tệp ZIP vào một thư mục
Các bước sau được sử dụng để giải nén các tệp ZIP vào một thư mục cụ thể trong C#.
- Mở kho lưu trữ ZIP bằng lớp FileStream.
- Tạo một thể hiện của lớp Archive và khởi tạo nó với đối tượng FileStream của ZIP.
- Giải nén tệp bằng phương pháp Archive.ExtractToDirectory(string).
Mẫu mã C# sau giải nén các tệp ZIP vào một thư mục.
// Mở tệp ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (var archive = new Archive(zipFile))
{
// Giải nén tập tin vào thư mục
archive.ExtractToDirectory("Unzipped Files");
}
}
C# Trích xuất tệp ZIP được bảo vệ bằng mật khẩu
Bạn cũng có thể giải nén tệp lưu trữ ZIP được bảo vệ bằng mật khẩu bằng Aspose.ZIP cho .NET. Đối với điều này, bạn chỉ cần chỉ định mật khẩu bằng cách sử dụng lớp ArchiveLoadOptions sẽ được chuyển dưới dạng tham số thứ hai cho hàm tạo của Lưu trữ.
Sau đây là mã mẫu để giải nén tệp ZIP được bảo vệ bằng mật khẩu.
// Mở tệp ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
// Giải mã bằng mật khẩu
using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
// Giải nén tập tin vào thư mục
archive.ExtractToDirectory("Unzipped Files");
}
}
C# Trích xuất các tệp ZIP được mã hóa AES
Một kho lưu trữ ZIP cũng có thể được mã hóa bằng mã hóa AES. Aspose.ZIP cho .NET hỗ trợ mã hóa lưu trữ bằng các phương pháp mã hóa AES128, AES192 và AES256. Giải nén tệp ZIP được mã hóa AES tương tự như giải nén tệp ZIP được bảo vệ bằng mật khẩu. Chỉ cần chỉ định mật khẩu giải mã bằng lớp ArchiveLoadOptions và phần còn lại sẽ do API đảm nhận.
Mẫu mã sau đây cho biết cách giải nén các tệp ZIP được mã hóa AES trong C#.
// Mở tệp ZIP
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
// Giải mã và giải nén vào thư mục
new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}
Thư viện giải nén C# - Nhận giấy phép API miễn phí
Bạn có thể sử dụng Aspose.ZIP cho .NET mà không bị giới hạn đánh giá bằng cách nhận giấy phép tạm thời miễn phí.
Sự kết luận
Trong bài viết này, bạn đã học cách giải nén tệp ZIP bằng C#. Ngoài ra, bạn đã biết cách giải nén tệp trong kho lưu trữ ZIP được bảo vệ bằng mật khẩu trong C# .NET. Các mẫu mã cũng đã trình bày cách giải nén tệp trong kho lưu trữ ZIP được mã hóa bằng C#. Bạn có thể khám phá thêm về Aspose.ZIP cho .NET bằng cách sử dụng tài liệu.