介绍

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 的文档?

完整文档可供查阅 这里.