跳至页脚内容
使用 IRONZIP

如何在 C# 中将文件解压到目录

解压缩文件 是软件开发中常见的任务,尤其是在处理压缩档案时。 在本文中,我们将探讨如何使用 C# 中的 IronZIP 库从 ZIP 档案中提取文件。

无论您是开发 Windows 应用程序还是 .NET 项目,理解解压缩文件的流程都是非常有价值的。 让我们深入学习如何在您的 C# 代码库中高效处理 ZIP 文件。

本文将解释以下内容:

  1. IronZIP 库的安装过程
  2. 如何提取 ZIP 档案
  3. 如何提取受密码保护的 ZIP 档案
  4. 如何创建 ZIP 文件
  5. 如何创建受密码保护的 ZIP 文件

为什么要解压文件?

ZIP 文件,也称为 ZIP 压缩档案,是将多个文件打包成单个压缩容器。 解压这些文件涉及提取压缩数据并将其恢复到原始状态。 当您需要在 C# 应用程序中访问或操作数据时,此过程至关重要。 IronZIP 通过提供简单的方法来管理压缩数据,从而简化了此任务。

什么是 IronZIP?

IronZIP 是一个强大的 C# ZIP 压缩档案库,可促进 .NET 应用程序中的创建读取提取档案。 无论您需要压缩文件、从现有档案中提取数据,还是管理您的 ZIP 文件,IronZIP 都提供了一个用户友好的 API 来高效完成这些任务。 IronZIP 简化了您在 .NET 应用程序中处理 ZIP 档案的工作。

它支持各种档案格式,包括 ZIP、TAR、GZIP 和 BZIP2。IronZIP 是跨平台的,兼容 .NET Core、.NET Standard 和 .NET Framework。 并且它提供高级功能,如受密码保护的档案、可定制的压缩级别和文件条目管理。

如何在 C# 中提取文件到目录

现在,我将讨论一些在 C# 中从 ZIP 文件提取的示例。 首先在 Visual Studio 中创建一个新的 C# 项目。 选择合适的项目类型(例如,控制台应用程序、Windows 窗体、ASP.NET Core 等)。 接下来,我们需要安装IronZIP NuGet 包

通过 NuGet 包管理器安装 IronZIP

要安装 IronZIP NuGet 包,您可以在包管理器控制台中使用以下命令:

Install-Package IronZip

或者,您可以使用 Visual Studio 中的包管理器 UI 搜索并安装 IronZIP 包。

在您的C#代码中,导入IronZIP命名空间以访问其类和方法。

using IronZip;
using IronZip;
Imports IronZip
$vbLabelText   $csharpLabel

在 C# 中提取 ZIP 文件的代码示例

以下代码将在 C# 中将文件解压缩到指定目录。

// This line extracts the "Images.zip" archive to the "Extracted Images" directory
IronZipArchive.ExtractArchiveToDirectory(@"E:\Images.zip", "Extracted Images");
// This line extracts the "Images.zip" archive to the "Extracted Images" directory
IronZipArchive.ExtractArchiveToDirectory(@"E:\Images.zip", "Extracted Images");
' This line extracts the "Images.zip" archive to the "Extracted Images" directory
IronZipArchive.ExtractArchiveToDirectory("E:\Images.zip", "Extracted Images")
$vbLabelText   $csharpLabel

上述代码读取指定的 ZIP 文件 ("E:\Images.zip"),解压其内容,并将提取的文件放入名为"Extracted Images"的目录中。

解释

IronZipArchive 指代 IronZIP 库提供的类。 它是您在 C# 代码中处理 ZIP 档案的主要入口点。 ExtractArchiveToDirectory(...)IronZipArchive 类提供的方法(或函数)。 它允许您将 ZIP 档案的内容(在此情况下为"E:\Images.zip"文件)提取到指定目录(在此情况下为名为"Extracted Images"的目录)。

该方法包含两个参数:

  1. 第一个参数(@"E:\Images.zip")是您想要提取的 ZIP 文件的路径。
  2. 第二个参数("Extracted Images")是您希望从 ZIP 档案中提取文件的目录。

Output:

如何在 C# 中解压文件到目录:图 1 - 提取的文件在 Extracted Images 目录中

如何提取受密码保护的 ZIP 文件

IronZIP 提供了一种简单的方法来提取加密 ZIP文件。 以下代码演示了如何从受密码保护的 ZIP 文件中提取所有文件。

// This line extracts the "EncryptedImages.zip" archive to the "ExtractedImages" directory with the given password
IronZipArchive.ExtractArchiveToDirectory(@"EncryptedImages.zip", "ExtractedImages", "zipP@55w0rd");
// This line extracts the "EncryptedImages.zip" archive to the "ExtractedImages" directory with the given password
IronZipArchive.ExtractArchiveToDirectory(@"EncryptedImages.zip", "ExtractedImages", "zipP@55w0rd");
' This line extracts the "EncryptedImages.zip" archive to the "ExtractedImages" directory with the given password
IronZipArchive.ExtractArchiveToDirectory("EncryptedImages.zip", "ExtractedImages", "zipP@55w0rd")
$vbLabelText   $csharpLabel

上述代码使用 IronZIP 将 "EncryptedImages.zip" 档案的内容提取到 "ExtractedImages" 目录中。它还指定密码 "zipP@55w0rd" 进行解密,表明 ZIP 文件已加密并需要提供的密码进行提取。 它将覆盖现有文件。

Output:

如何在 C# 中解压文件到目录:图 2 - 提取的受密码保护的文件位于 Extracted Images 目录中

在使用 C# 和 IronZIP 时,将文件解压缩到目录涉及充分利用 IronZIP 库的功能。通过使用 IronZipArchive.ExtractArchiveToDirectory 等功能,开发人员可以轻松地提取压缩文件,为处理本地文件头提供了一个简单机制。 它为在其应用程序中更新 zip 文件和 RAR 文件提供了高效方式。

IronZIP 还提供方法在 C# 和 .NET 应用程序中创建 ZIP 文件。 让我们在 C# 中创建一个 ZIP 压缩档案。

如何创建 ZIP 压缩档案

以下代码示例将创建一个 ZIP 压缩档案。

static void Main(string[] args)
{
    // Create a new ZIP archive with a high compression level (9)
    using (var archive = new IronZipArchive(9))
    {
        // Add image files to the archive
        archive.Add(@"E:\Images\image1.png");
        archive.Add(@"E:\Images\image2.png");
        archive.Add(@"E:\Images\image3.png");
        archive.Add(@"E:\Images\image4.png");

        // Export the ZIP archive to the file "MyImages.zip"
        archive.SaveAs("MyImages.zip");
    }
}
static void Main(string[] args)
{
    // Create a new ZIP archive with a high compression level (9)
    using (var archive = new IronZipArchive(9))
    {
        // Add image files to the archive
        archive.Add(@"E:\Images\image1.png");
        archive.Add(@"E:\Images\image2.png");
        archive.Add(@"E:\Images\image3.png");
        archive.Add(@"E:\Images\image4.png");

        // Export the ZIP archive to the file "MyImages.zip"
        archive.SaveAs("MyImages.zip");
    }
}
Shared Sub Main(ByVal args() As String)
	' Create a new ZIP archive with a high compression level (9)
	Using archive = New IronZipArchive(9)
		' Add image files to the archive
		archive.Add("E:\Images\image1.png")
		archive.Add("E:\Images\image2.png")
		archive.Add("E:\Images\image3.png")
		archive.Add("E:\Images\image4.png")

		' Export the ZIP archive to the file "MyImages.zip"
		archive.SaveAs("MyImages.zip")
	End Using
End Sub
$vbLabelText   $csharpLabel

上述代码演示了使用 IronZIP 创建一个新的 ZIP 压缩档案(压缩等级为 9),并添加多个条目,每个条目代表从指定文件路径添加的图像文件(image1.pngimage2.pngimage3.pngimage4.png)。

最后,使用 SaveAs 方法将创建的 ZIP 压缩档案导出为指定目录中的 "MyImages.zip"。 压缩等级 9 表示最大压缩,导致文件尺寸更小但处理时间可能更长。

如何在 C# 中解压文件到目录:图 3 - 前述代码输出的 ZIP 压缩档案

如何创建受密码保护的 ZIP 压缩档案

以下代码将创建一个受密码保护的 ZIP 文件。

// Create a new ZIP archive with a high compression level (9)
using (var archive = new IronZipArchive(9))
{
    // Password protect the ZIP archive (Support AES128 & AES256)
    archive.Encrypt("miPassw0rd", EncryptionMethods.AES256);

    // Add image files to the archive
    archive.Add(@"E:\Images\image1.png");
    archive.Add(@"E:\Images\image2.png");

    // Export the ZIP archive as "PasswordProtectedImages.zip"
    archive.SaveAs("PasswordProtectedImages.zip");
}
// Create a new ZIP archive with a high compression level (9)
using (var archive = new IronZipArchive(9))
{
    // Password protect the ZIP archive (Support AES128 & AES256)
    archive.Encrypt("miPassw0rd", EncryptionMethods.AES256);

    // Add image files to the archive
    archive.Add(@"E:\Images\image1.png");
    archive.Add(@"E:\Images\image2.png");

    // Export the ZIP archive as "PasswordProtectedImages.zip"
    archive.SaveAs("PasswordProtectedImages.zip");
}
' Create a new ZIP archive with a high compression level (9)
Using archive = New IronZipArchive(9)
	' Password protect the ZIP archive (Support AES128 & AES256)
	archive.Encrypt("miPassw0rd", EncryptionMethods.AES256)

	' Add image files to the archive
	archive.Add("E:\Images\image1.png")
	archive.Add("E:\Images\image2.png")

	' Export the ZIP archive as "PasswordProtectedImages.zip"
	archive.SaveAs("PasswordProtectedImages.zip")
End Using
$vbLabelText   $csharpLabel

上述代码演示了使用 IronZIP 创建一个使用指定加密方法(在此为 AES256)的受密码保护的 ZIP 压缩档案。 密码 "miPassw0rd" 被设置为保护 ZIP 文件。然后代码将两个图像文件(image1.pngimage2.png)从指定的文件路径添加到档案中。

最后,使用 SaveAs 方法将受密码保护的 ZIP 压缩档案导出为 "PasswordProtectedImages.zip"。 这确保了内容的安全性以及指定密码和加密方法。 IronZIP 支持 AES128、AES256 和传统方法。

结论

总而言之,本文已涵盖了使用 IronZIP 库以编程方式处理 C# 中压缩文件的基本方面。 从安装过程到提取、创建和保护 ZIP 压缩档案的实际示例,开发人员获取了有价值的见解。 IronZIP 的用户友好型 API、跨平台兼容性以及对加密方法的支持使其成为在各种 C# 应用程序中高效管理 ZIP 文件的多功能解决方案。

无论是更新现有文件还是处理受密码保护的档案,IronZIP 都简化了流程,为开发人员在其 C# 项目中寻求有效文件操作能力提供了强大的工具集。

IronZIP 提供灵活的许可选项,包括免费试用以供长期使用。 开发人员可以选择最适合其项目需求的许可模式,从而在其 C# 应用程序中实现 IronZIP 时确保多样性和便利性。

常见问题解答

如何在C#中从ZIP存档提取文件?

您可以使用IronZIP在C#中从ZIP存档中提取文件。IronZipArchive.ExtractArchiveToDirectory方法允许您指定ZIP文件的路径和目标目录以进行提取。

在.NET项目中安装IronZIP的步骤是什么?

要在.NET项目中安装IronZIP,您可以在Visual Studio中使用NuGet包管理器。在包管理器控制台中运行命令Install-Package IronZIP,或在NuGet包管理器UI中搜索IronZIP以将其添加到您的项目中。

我可以使用IronZIP提取受密码保护的ZIP文件吗?

是的,IronZIP支持提取受密码保护的ZIP文件。您需要在ExtractArchiveToDirectory方法中提供密码参数以访问和提取文件。

如何在C#中以编程方式创建ZIP文件?

您可以使用IronZIP在C#中创建ZIP文件,实例化一个新的IronZipArchive,使用Add方法添加文件,并使用SaveAs方法保存存档。

IronZIP支持多种存档格式吗?

是的,IronZIP支持多种存档格式,包括ZIP、TAR、GZIP和BZIP2,这使得C#应用程序能够灵活处理不同的压缩文件类型。

IronZIP是否与跨平台的.NET应用程序兼容?

IronZIP与跨平台的.NET应用程序兼容,因为它支持.NET Core、.NET Standard和.NET Framework,这使其在各种开发环境中都具有多样性。

IronZIP提供哪些加密方法?

IronZIP提供加密方法来创建受密码保护的ZIP存档。您可以使用Encrypt方法设置密码并保护您的存档。

如何在购买前评估IronZIP?

IronZIP提供免费试用和灵活的许可选项,允许开发人员在购买前评估库的功能和性能。

IronZIP为在C#中处理ZIP文件提供了哪些好处?

IronZIP提供用户友好的API,支持多种存档格式和加密方法,并简化了创建、读取和提取ZIP存档的过程,使其成为C#开发人员的高效工具。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。