在 C# 中合併多個 ZIP 或 TAR 存檔

在 .NET 應用程序中處理存檔時,您可能需要合併多個 ZIPTAR 文件。例如,您可能希望從多個存檔中提取文件和文件夾並將它們放入一個存檔中。為此,本文介紹瞭如何在 C# 中合併多個 ZIPTAR 文件。我們將介紹 ZIP 合併為 ZIP、TAR 合併為 TAR、ZIP 合併為 TAR 以及 TAR 合併為 ZIP。

用於合併 ZIP 和 TAR 文件的 C# .NET API

要合併多個 ZIP 和 TAR 存檔,我們將利用 Aspose.ZIP for .NET。它是一個功能豐富的 .NET API,允許您創建和操作各種流行的存檔格式。您可以 下載 API 的 DLL 或直接使用 NuGet 安裝它。

PM> Install-Package Aspose.Zip

在 C# 中合併多個 ZIP 文件

讓我們開始合併 ZIP 格式檔案的旅程。我們將採用兩個 ZIP 存檔並將它們的條目收集到一個 ZIP 文件中。以下是在 C# 中合併多個 ZIP 文件的步驟。

以下代碼示例展示瞭如何在 C# 中合併兩個 ZIP 文件。

// 加載源 ZIP 存檔
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // 加載目標 ZIP 存檔
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // 遍歷條目
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // 檢查是條目不是目錄。作為目錄的條目將被跳過,但它們的文件將根據相對路徑添加。
            if (!entry.IsDirectory)
            {
                // 加載條目到內存流
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // 將條目添加到目標 ZIP
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // 單獨保存合併的存檔
        destArchive.Save("Archives/merged-archive.zip");
    }
}

在 C# 中合併多個 TAR 文件

現在讓我們看看如何在 C# 中合併多個 TAR 存檔。以下是實現此目的的步驟。

以下代碼示例展示瞭如何在 C# 中合併多個 TAR 文件。

// 加載源 TAR 存檔
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // 加載目標 TAR 存檔
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // 遍歷條目
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // 檢查是條目不是目錄。作為目錄的條目將被跳過,但它們的文件將根據相對路徑添加。
            if (!entry.IsDirectory)
            {
                // 加載條目到內存流
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // 向目標 TAR 添加條目
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // 單獨保存合併的存檔
        destArchive.Save("Archives/merged-archive.tar");
    }
}

在 C# 中將 ZIP 合併到 TAR

在本節中,我們將了解如何在 C# 中將 ZIP 文件合併到 TAR 存檔中。以下是執行此操作的步驟。

以下代碼示例顯示瞭如何將 ZIP 存檔合併到 TAR 中。

// 加載源 ZIP 存檔
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // 加載目標 TAR 存檔
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // 遍歷條目
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // 檢查是條目不是目錄。作為目錄的條目將被跳過,但它們的文件將根據相對路徑添加。
            if (!entry.IsDirectory)
            {
                // 加載條目到內存流
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // 向目標 TAR 添加條目
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // 單獨保存合併的存檔
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

在 C# 中結合 TAR 和 ZIP

與前面的示例類似,您可以將 TAR 文件合併到 ZIP 中。以下代碼示例展示瞭如何從 TAR 中提取文件並將它們合併到 ZIP 中。

// 加載 TAR 存檔
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // 加載 ZIP 存檔
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // 遍歷條目
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // 檢查是條目不是目錄。作為目錄的條目將被跳過,但它們的文件將根據相對路徑添加。
            if (!entry.IsDirectory)
            {
                // 加載條目到內存流
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // 將條目添加到 ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // 單獨保存合併的存檔
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

獲取免費的 API 許可證

通過獲得免費的臨時許可證,您可以不受評估限制地使用 Aspose.ZIP for .NET。

結論

在本文中,您了解瞭如何在 C# 中以編程方式合併多個 ZIP 或 TAR 存檔。特別是,我們介紹瞭如何動態合併 ZIP 文件、TAR 文件、ZIP 到 TAR 以及 TAR 到 ZIP。要探索有關 Aspose.ZIP for .NET 的更多信息,您可以訪問 文檔。此外,您可以將您的查詢發佈到我們的論壇

也可以看看