Khi làm việc với các tập tin ZIP, bạn có thể gặp phải một kịch bản mà một tập tin ZIP chứa các tập tin ZIP khác, tạo ra một cấu trúc lồng nhau. Nếu bạn muốn đơn giản hóa điều này bằng cách giải nén tất cả các tập tin ZIP bên trong vào tập tin ZIP bên ngoài, bạn đang ở đúng nơi. Trong bài viết này, chúng ta sẽ khám phá cách tạo một tập tin ZIP phẳng trong C# sử dụng Aspose.ZIP cho .NET.
Mục lục
- Tổng quan về API .NET để Tạo Tập tin ZIP Phẳng
- Các bước để Tạo một Tập tin ZIP Phẳng
- Nhận Giấy phép API Miễn phí
- Kết luận
- Tham khảo thêm
Tổng quan về API .NET để Tạo Tập tin ZIP Phẳng
Để tạo các tập tin ZIP phẳng, chúng ta sẽ sử dụng thư viện Aspose.ZIP cho .NET. API lưu trữ mạnh mẽ này cho phép bạn tạo và giải nén nhiều định dạng tập tin lưu trữ khác nhau, bao gồm ZIP, TAR, GZip, và 7z. Bạn có thể dễ dàng cài đặt thư viện này từ NuGet hoặc tải DLL của nó từ phần tải về.
PM> Install-Package Aspose.Zip
Các bước để Tạo một Tập tin ZIP Phẳng trong C#
Để hiểu rõ hơn về cấu trúc của một tập tin ZIP phẳng, hãy xem xét ví dụ sau. Ban đầu, chúng ta có một tập tin ZIP chứa một tập tin ZIP khác:
parent.zip
├ first.txt
├ inner.zip
│ ├ game.exe
│ └ subitem.bin
└ picture.gif
Sau khi chuyển đổi tập tin ZIP này thành cấu trúc phẳng, tất cả các mục từ tập tin ZIP bên trong sẽ được giải nén vào tập tin ZIP cha, dẫn đến cấu trúc sau:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Các bước thực hiện
Dưới đây là cách tạo một tập tin ZIP phẳng trong C# một cách lập trình:
- Tải Tập tin ZIP Cha: Sử dụng lớp Archive để tải tập tin ZIP cha.
- Khởi tạo Danh sách: Tạo danh sách để lưu trữ:
- Các mục cần xóa khỏi tập tin ZIP cha
- Các mục đã giải nén và tên của chúng
- Lặp qua Các Mục trong Tập tin: Lặp qua từng ArchiveEntry trong tập tin ZIP cha bằng cách sử dụng bộ sưu tập Archive.Entries.
- Xử lý từng Mục:
- Kiểm tra xem mục có phải là một tập tin ZIP không bằng cách sử dụng
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Nếu có, thêm nó vào danh sách các mục cần xóa.
- Mở mục vào một đối tượng MemoryStream bằng cách sử dụng
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Lặp qua các mục của tập tin ZIP bên trong, thực hiện các bước sau:
- Thêm tên của mỗi mục vào danh sách các mục cần thêm.
- Tải mỗi mục vào một
MemoryStream
bằng cách sử dụngArchiveEntry.Open().CopyTo(MemoryStream)
. - Thêm mục vào danh sách các mục cần thêm vào tập tin ZIP cha.
- Kiểm tra xem mục có phải là một tập tin ZIP không bằng cách sử dụng
- Xóa Các Mục ZIP Bên trong: Lặp qua danh sách các tập tin ZIP bên trong và xóa từng mục bằng cách sử dụng phương thức Archive.DeleteEntry(ArchiveEntry).
- Thêm Các Mục Mới vào Tập tin ZIP Cha: Lặp qua danh sách các mục cần thêm và bao gồm từng mục bằng phương thức Archive.CreateEntry(String, Stream).
- Lưu Tập tin ZIP Cha: Cuối cùng, lưu tập tin ZIP cha đã được chỉnh sửa bằng phương thức Archive.Save(String).
Dưới đây là một mẫu mã minh họa cách tạo một tập tin ZIP phẳng trong C#:
Nhận Giấy phép API Miễn phí
Bạn có thể nhận một giấy phép tạm thời miễn phí để sử dụng Aspose.ZIP cho .NET mà không có bất kỳ giới hạn đánh giá nào.
Kết luận
Trong hướng dẫn này, bạn đã học cách tạo một tập tin ZIP phẳng một cách hiệu quả bằng C#. Chúng tôi đã minh họa quy trình giải nén các tập tin ZIP bên trong vào tập tin ZIP cha, hiệu quả tránh được các thư mục lồng nhau. Để biết thêm thông tin, hãy kiểm tra tài liệu Aspose.ZIP cho .NET, hoặc liên hệ với chúng tôi qua diễn đàn.