Hợp nhất nhiều kho lưu trữ ZIP hoặc TAR trong C#

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# .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#.

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.

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.

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.

Xem thêm