在 .NET 應用程序中處理存檔時,您可能需要合併多個 ZIP 或 TAR 文件。例如,您可能希望從多個存檔中提取文件和文件夾並將它們放入一個存檔中。為此,本文介紹瞭如何在 C# 中合併多個 ZIP 或 TAR 文件。我們將介紹 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 文件的步驟。
- 使用 Archive 類加載第一個 ZIP 文件。
- 同樣,使用 Archive 類加載第二個 ZIP 文件。
- 現在,使用 Archive.Entries 集合循環遍歷第一個 ZIP 的條目。
- 使用 ArchiveEntry.Open().CopyTo(MemoryStream) 方法將每個 ArchiveEntry 複製到 MemoryStream 對象。
- 使用 Archive.CreateEntry(string, MemoryStream) 方法向第二個 ZIP 添加條目。
- 使用 Archive.Save(string) 方法將合併的 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 存檔。以下是實現此目的的步驟。
- 使用 TarArchive 類加載第一個 TAR 文件。
- 同樣,使用 TarArchive 類加載第二個 TAR 文件。
- 現在,使用 TarArchive.Entries 集合遍歷第一個 TAR 的條目。
- 使用 TarEntry.Open().CopyTo(MemoryStream) 方法將每個 TarEntry 複製到 MemoryStream 對象。
- 使用 TarArchive.CreateEntry(string, MemoryStream) 方法將條目添加到第二個 TAR。
- 使用 TarArchive.Save(string) 方法保存合併的 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 存檔中。以下是執行此操作的步驟。
- 使用 Archive 類加載 ZIP 文件。
- 使用 TarArchive 類加載 TAR 文件。
- 現在,使用 Archive.Entries 集合循環遍歷 ZIP 的條目。
- 使用 ArchiveEntry.Open().CopyTo(MemoryStream) 方法將每個 ArchiveEntry 複製到 MemoryStream 對象。
- 使用 TarArchive.CreateEntry(string, MemoryStream) 方法 . 向 TAR 添加條目
- 使用 TarArchive.Save(string) 方法保存 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 的更多信息,您可以訪問 文檔。此外,您可以將您的查詢發佈到我們的論壇。