在C#中以编程方式将文件或文件夹添加到ZIP存档

在CSharp中创建ZIP

ZIP存档用于将一个或多个文件或文件夹压缩并保存到单个容器中。 ZIP归档文件封装了文件和文件夹,并保存了它们的元数据信息。 归档的最常见用法是减小用于存储或传输的文件的大小,并应用加密技术以提高安全性。 除文件压缩工具外,各种桌面和Web应用程序还使用自动压缩/提取功能来上载,下载,共享或加密文件。 本文还针对类似的情况,并提供了一些简单的方法来压缩文件或文件夹,并使用C#以编程方式创建ZIP存档。

在本文中,您将学习如何执行以下ZIP归档操作:

先决条件– C#ZIP库

Aspose.ZIP for .NET 是一个功能强大且易于使用的API,用于在.NET应用程序中压缩或解压缩文件和文件夹。 它还提供AES加密技术来加密ZIP存档中的文件。您可以从NuGet安装API或从“下载”部分下载其二进制文件。

在C#中创建一个ZIP存档

以下是通过将文件添加到ZIP归档文件来压缩文件的步骤:

  • 为输出ZIP存档创建FileStream对象。
  • 将源文件打开到FileStream对象中。
  • 创建一个Archive类的对象。
  • 使用Archive.CreateEntry(string,FileStream)方法将文件添加到存档中。
  • 使用Archive.Save(FileStream)方法创建ZIP存档。

下面的代码示例演示如何使用C#将文件添加到ZIP存档中。

在C#中将多个文件添加到ZIP存档中

如果要将多个文件添加到ZIP存档中,则可以使用以下方式之一进行操作。

使用FileStream压缩多个文件

在此方法中,FileStream类用于使用Archive.CreateEntry(String,FileStream)方法将文件添加到ZIP存档中。 下面的代码示例演示如何在C#中将多个文件添加到ZIP中。

使用FileInfo压缩多个文件

您也可以使用FileInfo类将多个文件添加到ZIP存档中。 在此方法中,将使用FileInfo类加载文件,并使用Archive.CreateEntry(String,FileInfo)方法将其添加到ZIP存档中。 下面的代码示例演示如何使用C#中的FileInfo类对多个文件进行ZIP处理。

使用路径的ZIP文件

您可以将文件的路径直接提供给Archive.CreateEntry(String name,String path,Boolean openImmediately,ArchiveEntrySettings newEntrySettings)方法,而不是使用ZIPInfo的FileInfo或FileStream类。 下面的代码示例显示如何使用文件的路径对ZIP文件进行压缩。

将文件夹添加到C#中的ZIP存档中

您也可以对文件夹进行ZIP压缩,这可能是将多个文件添加到ZIP存档的另一种选择。 只需将源文件放入一个文件夹中,然后将该文件夹添加到ZIP存档中。 以下是压缩文件夹的步骤:

  • 为输出ZIP存档创建FileStream类的对象。
  • 创建一个Archive类的实例。
  • 使用DirectoryInfo类指定要压缩的文件夹。
  • 使用Archive.CreateEntries(DirectoryInfo)方法将文件夹添加到ZIP中。
  • 使用Archive.Save(FileStream)方法创建ZIP存档。

下面的代码示例演示如何在C#中将文件夹添加到ZIP。

在C#中使用ZipCrypto创建受密码保护的ZIP存档

您可以使用密码保护ZIP存档并应用ZipCrypto加密。 为此,在存档的构造函数中使用ArchiveEntrySettings类,该构造函数接受加密类型作为第二个参数。

以下代码示例显示了如何在C#中使用ZipCrypto创建受密码保护的ZIP存档。

在C#中创建AES加密的ZIP存档

用于.NET的Aspose.ZIP还允许您将AES加密应用于ZIP存档。 您可以使用以下AES加密方法:

  • AES128
  • AES192
  • AES256

为了应用AES加密,API提供了AesEcryptionSettings类。 以下代码示例显示了如何在C#中创建AES加密的ZIP存档。

设定平行压缩模式

如果有多个条目,您还可以将API配置为并行压缩。 为此,您可以使用ParallelOptions类指定并行压缩模式。 .NET的Aspose.ZIP提供以下并行压缩模式。

  • 从不–请勿并行压缩。
  • 始终–并行压缩(请注意内存不足)。
  • 自动–确定是否对条目使用并行压缩。 此选项可能仅并行压缩某些条目。

以下代码示例显示了在压缩多个文件时如何设置并行压缩模式。

了解有关.NET的Aspose.ZIP的更多信息

使用以下资源探索有关我们的C#ZIP API的更多信息: