Tạo Tệp ZIP Phẳng trong C#

Khi làm việc với các tệp ZIP, bạn có thể gặp phải tình huống mà một tệp ZIP chứa các tệp ZIP khác, dẫn đến một cấu trúc lồng ghép. Nếu mục tiêu của bạn là đơn giản hóa điều này bằng cách giải nén tất cả các tệp ZIP bên trong vào tệp 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 ZIP phẳng trong C# bằng cách sử dụng Aspose.ZIP cho .NET.

Mục lục

Tổng quan về API .NET để Tạo Tệp ZIP Phẳng

Để tạo các tệp ZIP phẳng, chúng ta sẽ sử dụng thư viện Aspose.ZIP cho .NET. API nén mạnh mẽ này cho phép bạn tạo và giải nén nhiều định dạng tệp nén 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 xuống DLL của nó từ phần tải xuống.

PM> Install-Package Aspose.Zip

Các bước để Tạo một Tệp ZIP Phẳng trong C#

Để hiểu rõ hơn về cấu trúc của một tệp ZIP phẳng, hãy xem xét ví dụ sau. Ban đầu, chúng ta có một tệp ZIP chứa một tệp ZIP khác:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

Sau khi biến đổi tệp ZIP này thành một cấu trúc phẳng, tất cả các mục từ tệp ZIP bên trong sẽ được giải nén vào tệp 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 ZIP phẳng bằng lập trình trong C#:

  1. Tải tệp ZIP Cha: Sử dụng lớp Archive để tải tệp 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 từ tệp 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 Nén: Lặp qua từng ArchiveEntry trong tệp ZIP cha bằng cách sử dụng tập hợp Archive.Entries.
  4. Xử lý Mỗi Mục:
    • Kiểm tra xem mục có phải là một tệp ZIP không bằng cách sử dụng ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Nếu đúng, thêm nó vào danh sách các mục cần xóa.
    • Mở mục vào đố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 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 sẽ được thêm vào.
      • Tải mỗi mục vào 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 sẽ được thêm vào tệp ZIP cha.
  5. Xóa Các Mục ZIP Bên Trong: Lặp qua danh sách các tệp 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 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 cách sử dụng phương thức Archive.CreateEntry(String, Stream).
  7. Lưu Tệp ZIP Cha: Cuối cùng, lưu tệp ZIP cha đã được chỉnh sửa bằng cách sử dụng phương thức Archive.Save(String).

Dưới đây là một đoạn mã mẫu minh họa cách tạo một tệp ZIP phẳng trong C#:

Nhận Giấy phép API Miễn phí

Bạn có thể nhận 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ỳ hạn chế 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 ZIP phẳng một cách hiệu quả bằng C#. Chúng tôi đã trình bày quy trình giải nén các tệp ZIP bên trong vào tệp ZIP cha, hiệu quả tránh được các thư mục lồng ghép. Để biết thêm thông tin, hãy tham khảo tài liệu Aspose.ZIP cho .NET, hoặc liên hệ với chúng tôi qua diễn đàn.

Xem thêm

Bằng cách làm theo các bước này, bạn có thể dễ dàng triển khai nén tệp zip phẳng C# trong các ứng dụng của mình, đảm bảo một tệp zip đơn vừa hiệu quả vừa dễ quản lý.