Trong khi làm việc với các tệp lưu trữ từ bên trong các ứng dụng .NET của bạn, bạn có thể cần hợp nhất nhiều tệp ZIP hoặc TAR. Ví dụ: bạn có thể muốn trích xuất các tệp và thư mục từ nhiều kho lưu trữ và đưa chúng vào một kho lưu trữ duy nhất. Để đạt được điều đó, bài viết này trình bày cách hợp nhất nhiều tệp ZIP hoặc TAR trong C#. Chúng tôi sẽ đề cập đến việc hợp nhất ZIP vào ZIP, TAR thành TAR, ZIP thành TAR và TAR thành ZIP.
- C# API để hợp nhất các tệp ZIP và TAR
- Hợp nhất nhiều tệp ZIP trong C#
- Hợp nhất nhiều tệp TAR trong C#
- Kết hợp ZIP với TAR trong C#
- Kết hợp TAR với ZIP trong C#
C# .NET API để hợp nhất các tệp ZIP và TAR
Để hợp nhất nhiều tệp lưu trữ ZIP và TAR, chúng tôi sẽ tận dụng Aspose.ZIP cho .NET. Nó là một API .NET giàu tính năng cho phép bạn tạo và thao tác với nhiều định dạng lưu trữ phổ biến khác nhau. Bạn có thể tải xuống DLL của API hoặc cài đặt trực tiếp bằng NuGet.
PM> Install-Package Aspose.Zip
Hợp nhất nhiều tệp ZIP trong C#
Hãy bắt đầu hành trình hợp nhất các tệp lưu trữ với định dạng ZIP. Chúng tôi sẽ lấy hai tệp lưu trữ ZIP và thu thập các mục nhập của chúng vào một tệp ZIP duy nhất. Sau đây là các bước để hợp nhất nhiều tệp ZIP trong C#.
- Tải tệp ZIP đầu tiên bằng lớp Lưu trữ.
- Tương tự, tải tệp ZIP thứ hai bằng lớp Lưu trữ.
- Bây giờ, lặp lại các mục của ZIP đầu tiên bằng bộ sưu tập Archive.Entries.
- Sao chép từng ArchiveEntry vào một đối tượng MemoryStream bằng phương thức ArchiveEntry.Open(). CopyTo (MemoryStream).
- Thêm mục nhập vào tệp ZIP thứ hai bằng phương thức Archive.CreateEntry (string, MemoryStream).
- Lưu ZIP đã hợp nhất thành một tệp riêng biệt bằng phương pháp Archive.Save (string).
Mẫu mã sau đây cho thấy cách hợp nhất hai tệp ZIP trong C#.
// Tải kho lưu trữ ZIP nguồn
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
// Tải kho lưu trữ ZIP đích
using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Lặp lại các mục nhập
foreach (ArchiveEntry entry in sourceArchive.Entries)
{
// Kiểm tra là mục nhập không phải là một thư mục. Các mục nhập là thư mục bị bỏ qua, nhưng các tệp của chúng được thêm vào theo các đường dẫn tương đối.
if (!entry.IsDirectory)
{
// Tải mục nhập vào luồng bộ nhớ
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Thêm mục nhập vào ZIP đích
destArchive.CreateEntry(entry.Name, mem);
}
}
// Lưu kho lưu trữ đã hợp nhất một cách riêng biệt
destArchive.Save("Archives/merged-archive.zip");
}
}
Hợp nhất nhiều tệp TAR trong C#
Bây giờ chúng ta hãy kiểm tra cách hợp nhất nhiều tệp lưu trữ TAR trong C#. Sau đây là các bước để đạt được điều này.
- Tải tệp TAR đầu tiên bằng lớp TarArchive.
- Tương tự, tải tệp TAR thứ hai bằng cách sử dụng lớp TarArchive.
- Bây giờ, lặp lại các mục của TAR đầu tiên bằng cách sử dụng bộ sưu tập TarArchive.Entries.
- Sao chép từng TarEntry vào một đối tượng MemoryStream bằng cách sử dụng phương thức TarEntry.Open(). CopyTo (MemoryStream).
- Thêm mục nhập vào TAR thứ hai bằng phương thức TarArchive.CreateEntry (string, MemoryStream).
- Lưu TAR đã hợp nhất bằng phương thức TarArchive.Save (string).
Mẫu mã sau đây cho thấy cách hợp nhất nhiều tệp TAR trong C#.
// Tải tệp lưu trữ TAR nguồn
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Tải tệp lưu trữ TAR đích
using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Lặp lại các mục nhập
foreach (TarEntry entry in sourceArchive.Entries)
{
// Kiểm tra là mục nhập không phải là một thư mục. Các mục nhập là thư mục bị bỏ qua, nhưng các tệp của chúng được thêm vào theo các đường dẫn tương đối.
if (!entry.IsDirectory)
{
// Tải mục nhập vào luồng bộ nhớ
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Thêm mục nhập vào TAR đích
destArchive.CreateEntry(entry.Name, mem);
}
}
// Lưu kho lưu trữ đã hợp nhất một cách riêng biệt
destArchive.Save("Archives/merged-archive.tar");
}
}
Hợp nhất ZIP thành TAR trong C#
Trong phần này, chúng ta sẽ xem cách hợp nhất tệp ZIP vào tệp lưu trữ TAR trong C#. Sau đây là các bước để thực hiện thao tác này.
- Tải tệp ZIP bằng lớp Lưu trữ.
- Tải tệp TAR bằng lớp TarArchive.
- Bây giờ, hãy lặp lại các mục nhập của ZIP bằng bộ sưu tập Archive.Entries.
- Sao chép từng ArchiveEntry vào một đối tượng MemoryStream bằng phương thức ArchiveEntry.Open(). CopyTo (MemoryStream).
- Thêm mục nhập vào TAR bằng phương thức TarArchive.CreateEntry (string, MemoryStream) .
- Lưu tệp TAR bằng phương thức TarArchive.Save (string).
Mẫu mã sau đây cho thấy cách hợp nhất một kho lưu trữ ZIP vào TAR.
// Tải kho lưu trữ ZIP nguồn
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
// Tải tệp lưu trữ TAR đích
using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Lặp lại các mục nhập
foreach (ArchiveEntry entry in zipArchive.Entries)
{
// Kiểm tra là mục nhập không phải là một thư mục. Các mục nhập là thư mục bị bỏ qua, nhưng các tệp của chúng được thêm vào theo các đường dẫn tương đối.
if (!entry.IsDirectory)
{
// Tải mục nhập vào luồng bộ nhớ
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Thêm mục nhập vào TAR đích
tarArchive.CreateEntry(entry.Name, mem);
}
}
// Lưu kho lưu trữ đã hợp nhất một cách riêng biệt
tarArchive.Save("Archives/merged-archive.tar");
}
}
Kết hợp TAR với ZIP trong C#
Tương tự như ví dụ trước, bạn có thể hợp nhất tệp TAR vào ZIP. Mẫu mã sau đây cho thấy cách trích xuất tệp từ TAR và hợp nhất chúng thành ZIP.
// Tải kho lưu trữ TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Tải kho lưu trữ ZIP
using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Lặp lại các mục nhập
foreach (TarEntry entry in tarArchive.Entries)
{
// Kiểm tra là mục nhập không phải là một thư mục. Các mục nhập là thư mục bị bỏ qua, nhưng các tệp của chúng được thêm vào theo các đường dẫn tương đối.
if (!entry.IsDirectory)
{
// Tải mục nhập vào luồng bộ nhớ
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Thêm mục nhập vào ZIP
zipArchive.CreateEntry(entry.Name, mem);
}
}
// Lưu kho lưu trữ đã hợp nhất một cách riêng biệt
zipArchive.Save("Archives/merged-archive.zip");
}
}
Nhận giấy phép API miễn phí
Bạn có thể sử dụng Aspose.ZIP cho .NET mà không có 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 hợp nhất nhiều tệp nén ZIP hoặc TAR theo lập trình trong C#. Đặc biệt, chúng tôi đã đề cập đến cách hợp nhất tệp ZIP, tệp TAR, ZIP thành TAR và TAR thành ZIP động. Để khám phá thêm về Aspose.ZIP cho .NET, bạn có thể truy cập tài liệu. Ngoài ra, bạn có thể đăng các truy vấn của mình lên diễn đàn của chúng tôi.