
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
- Các bước để Tạo một Tệp ZIP Phẳng
- Nhận Giấy phép API Miễn phí
- Kết luận
- Xem thêm
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#:
- Tải tệp ZIP Cha: Sử dụng lớp Archive để tải tệp 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 từ tệp 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 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.
- 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ụngArchiveEntry.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.
- Kiểm tra xem mục có phải là một tệp 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 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 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).
- 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
- Thêm Tệp hoặc Thư mục vào Tệp ZIP trong C#
- Giải nén Tệp trong Tệp ZIP bằng C#
- Gộp Nhiều Tệp ZIP hoặc TAR trong C#
- Tạo Tệp Lưu trữ Tự Giải nén Thực thi trong C#
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ý.