介紹

Zip 檔案對於資料組織和壓縮至關重要,但如何以程式設計方式修改其內容?解決方案在於 Aspose.Zip for .NET,這是一個強大的函式庫,可以使用 C# 簡化 zip 檔案操作。在本教程中,我們將逐步指導您提取、刪除和新增條目到 zip 檔案。

先決條件

在深入探討之前,請確保您具備以下條件:

  1. Aspose.Zip for .NET Library:在您的專案中安裝該程式庫。你可以下載它 這裡.

  2. 文件目錄:設定一個目錄來儲存您的 zip 檔案。代替 "Your Document Directory" 在程式碼中使用您的實際路徑。

導入必要的命名空間

首先導入所需的命名空間:

using Aspose.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

步驟 1:開啟外部 Zip 文件

首先開啟您的主 zip 檔案(外部 zip):

string dataDir = "Your Data Directory";
using (Archive outer = new Archive(dataDir + "outer.zip"))
{
    // 繼續識別內部 zip 條目
}

步驟 2:識別內部 Zip 條目

接下來,識別並準備刪除所有內部 zip 檔案:

List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();
List<string> namesToInsert = new List<string>();
List<MemoryStream> contentToInsert = new List<MemoryStream>();

foreach (ArchiveEntry entry in outer.Entries)
{
    if (entry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase))
    {
        entriesToDelete.Add(entry);
        
        using (MemoryStream innerCompressed = new MemoryStream())
        {
            entry.Open().CopyTo(innerCompressed);
            
            // 提取內部條目
            using (Archive inner = new Archive(innerCompressed))
            {
                foreach (ArchiveEntry ie in inner.Entries)
                {
                    namesToInsert.Add(ie.Name);
                    MemoryStream content = new MemoryStream();
                    ie.Open().CopyTo(content);
                    contentToInsert.Add(content);
                }
            }
        }
    }
}

步驟3:刪除內部存檔項目

收集到所需的條目後,刪除內部 zip 條目:

foreach (ArchiveEntry e in entriesToDelete)
{
    outer.DeleteEntry(e);
}

步驟4:將修改後的條目新增至外部Zip

現在,您可以將新提取的條目新增回外部 zip 檔案中:

for (int i = 0; i < namesToInsert.Count; i++)
{
    outer.CreateEntry(namesToInsert[i], contentToInsert[i]);
}

步驟5:儲存修改後的Zip文件

最後,將變更儲存到新的 zip 檔案中:

outer.Save(dataDir + "flatten.zip");

結論

Aspose.Zip for .NET 提供了一種強大而直接的方式來透過程式設計來操作 zip 檔案。本教學涵蓋如何擷取、刪除和新增 zip 檔案的條目,展示了該程式庫的多功能性。探索不同的場景,並增強您的文件操作技能!

常見問題解答

我可以將 Aspose.Zip for .NET 與其他程式語言一起使用嗎?

Aspose.Zip 主要為 .NET 應用程式設計,但 Aspose 為各種程式語言提供了類似的程式庫。

Aspose.Zip for .NET 有免費試用版嗎?

是的,可以下載免費試用版 這裡.

如何獲得 Aspose.Zip for .NET 的支援?

訪問 Aspose.Zip論壇 尋求支持和討論。

我可以購買 Aspose.Zip for .NET 的臨時授權嗎?

是的,您可以獲得臨時駕照 這裡.

在哪裡可以找到 Aspose.Zip for .NET 的文檔?

完整文件可供查閱 這裡.