Tạo Tập tin ZIP Phẳng trong C#

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

Để 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:

  1. Tải Tập tin ZIP Cha: Sử dụng lớp Archive để tải tập tin ZIP cha.
  2. 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
  3. 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.
  4. 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ụng ArchiveEntry.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.
  5. 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).
  6. 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).
  7. 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.

Tham khảo thêm