在之前的 post 中,您学习了使用 Aspose.ZIP for .NET 将文件和文件夹压缩到 ZIP 档案中的不同方法。在这篇文章中,我将向您展示如何在 C# 中提取或解压缩 ZIP 文件。我们还将介绍如何在 C# 中提取受密码保护或 AES 加密的 ZIP 存档。本文分为以下几个部分:
用于解压缩 ZIP 文件的 C# API - 免费下载
在我们开始之前,请确保您已 下载 并引用了适用于 .NET 的 Aspose.ZIP,或者在您的项目中使用 NuGet 包管理器 安装了它的包。
在 C# .NET 中解压缩 ZIP 文件
解压缩 ZIP 文件的过程可以通过两种方式实现:
- 分别解压缩 ZIP 中的每个文件
- 解压文件到指定文件夹
在第一种方法中,您可以显式访问和解压缩 ZIP 存档中的每个文件。此外,您可以打印提取过程的进度。而第二种方法只是将文件解压缩到指定的文件夹中。
在 C# 中提取 ZIP 中的每个文件
以下是在 C# 中访问和提取文件并打印提取进度的步骤:
- 将 ZIP 存档打开到 FileStream 对象中。
- 使用 FileStream 对象创建和初始化 Archive 的实例。
- 使用 Archive.Entries 集合访问 ZIP 中的文件。
- 设置 ArchiveEntry.ExtractionProgressed 事件处理程序以打印提取进度。
- 使用 ArchiveEntry.Extract(string) 方法提取/解压缩文件。
以下代码示例展示了如何使用 C# 提取 ZIP 存档中的文件。
// 打开 ZIP 文件
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// 访问 ZIP 存档中的每个条目
for (int i = 0; i < archive.Entries.Count; i++)
{
int percentReady = 0;
// 将提取进度记录到控制台。
archive.Entries[i].ExtractionProgressed += (s, e) =>
{
int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
if (percent > percentReady)
{
Console.WriteLine(string.Format("{0}% decompressed", percent));
percentReady = percent;
}
};
// 将条目的内容提取到磁盘。
archive.Entries[i].Extract(archive.Entries[i].Name);
}
}
}
C# 将 ZIP 文件解压缩到一个文件夹中
以下步骤用于将 ZIP 文件解压缩到 C# 中的特定文件夹中。
- 使用 FileStream 类打开 ZIP 存档。
- 创建 Archive 类的实例并使用 ZIP 的 FileStream 对象对其进行初始化。
- 使用 Archive.ExtractToDirectory(string) 方法解压缩文件。
以下 C# 代码示例将 ZIP 文件解压缩到一个文件夹中。
// 打开 ZIP 文件
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (var archive = new Archive(zipFile))
{
// 解压文件到文件夹
archive.ExtractToDirectory("Unzipped Files");
}
}
C# 提取受密码保护的 ZIP 文件
您还可以使用 Aspose.ZIP for .NET 解压缩受密码保护的 ZIP 存档。为此,您只需要使用 ArchiveLoadOptions 类指定密码,该类将作为第二个参数传递给存档的构造函数。
以下是解压缩受密码保护的 ZIP 文件的示例代码。
// 打开 ZIP 文件
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
// 使用密码解密
using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
// 提取文件到文件夹
archive.ExtractToDirectory("Unzipped Files");
}
}
C# 提取 AES 加密的 ZIP 文件
ZIP 存档也可以使用 AES 加密进行加密。 Aspose.ZIP for .NET 支持使用 AES128、AES192 和 AES256 加密方法加密档案。解压缩 AES 加密的 ZIP 文件类似于解压缩受密码保护的 ZIP 文件。只需使用 ArchiveLoadOptions 类指定解密密码,其余部分将由 API 处理。
以下代码示例展示了如何在 C# 中解压缩 AES 加密的 ZIP 文件。
// 打开 ZIP 文件
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
// 解密并解压到文件夹
new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}
C# 解压缩库 - 获取免费 API 许可证
您可以通过获得 免费临时许可证 来使用 Aspose.ZIP for .NET,而不受评估限制。
结论
在本文中,您学习了如何使用 C# 解压缩 ZIP 文件。此外,您还了解了如何在 C# .NET 中解压缩受密码保护的 ZIP 存档中的文件。代码示例还演示了如何在 C# 中提取加密 ZIP 存档中的文件。您可以使用 documentation 探索更多关于 Aspose.ZIP for .NET 的信息。