使用IRONZIP

如何在C#中打开Zip文件

查克尼特·宾
查克尼特·宾
2024年一月4日
分享:

ZIP 是一种归档入口文件系统格式,支持无损数据压缩。 ZIP 文件可能包含一个或多个经过压缩的文件或目录。 ZIP 文件格式允许使用多种压缩算法,但最常用的是 DEFLATE。 随后,ZIP 格式很快得到了许多软件工具的支持。 顶级操作系统提供商很早就提供了 ZIP 存档支持。微软从 Windows 98 开始就提供 ZIP 文件支持,其他公司也纷纷效仿。

在本文中,我们将探索使用IronZIP打开ZIP压缩档案文件或已提取文件的一种现代、简单且高效的方法。 我们将从总体上了解 ZIP 文件及其优势。 然后,我们将查看系统名称空间中可用的选项,以便使用 ZIP 文件格式。 接下来,我们将逐步说明如何打开ZIP文件、将ZIP文件解压到临时文件夹、创建新ZIP文件以及向现有ZIP文件添加文件。

在软件应用程序中使用 ZIP 文件的优势

  1. 压缩:这种技术使用多种压缩算法,如 Implode、Deflate、Deflate64、bzip2、LZMA、WavPack、PPMd 等,来减少归档文件/文件夹的大小。

  2. 减少传输时间:较小的文件大小意味着更快的传输时间,特别是在通过互联网发送文件时。 这对于电子邮件附件和从网站上传或下载文件尤其有利。

  3. 文件合并:ZIP 文件使您能够将多个文件合并到单个存档中,从而减少需要管理的文件数量。 这对于组织项目或分发由多个文件组成的软件非常有用。

  4. 密码**保护**:许多 ZIP 实用程序提供密码保护归档文件的选项,为您的文件增加一层安全性。 当您想限制对 ZIP 文件内容的访问时,这将非常有用。

使用 IronZIP 创建 ZIP 存档和解压缩 ZIP 文件

IronZIP 库的介绍和文档可以在此处找到。 在 C# 应用程序中,可以通过各种方式创建和提取 ZIP 文件。 IronZIP NuGet 软件包具有以不同格式 ZIP、TAR、GZIP 和 BZIP2 归档文件的所有功能。以下是如何在现代应用程序编程中使用 IronZIP 构建下一代应用程序的示例步骤,以打开 ZIP 文件、提取 ZIP 文件、创建新的 ZIP 文件等。

步骤 1.创建 .NET Core 控制台应用程序

创建项目

可使用 Visual Studio 创建 .NET 控制台应用程序。 打开 Visual Studio 并选择创建项目。 在这里,您可以看到创建项目的各种模板。 演示或测试代码的最简单方法是创建一个控制台应用程序。 我们将选择控制台应用程序项目模板。

如何在 C# 中打开 Zip 文件:图 1 - 新项目

输入项目名称

在下面的窗口中,您可以输入项目名称、项目在文件系统中的存储位置以及解决方案文件夹的路径。 解决方案和项目文件夹可以保持一致,也可以放在不同的文件夹中。

如何在 C# 中打开 Zip 文件:图 2 - 配置项目

选择 .NET Framework 版本

下一步是为项目选择 .NET Framework 版本。 如果您想在特定版本中进行开发,请指定您喜欢的版本,否则请始终选择最新的稳定版本来创建项目。 最新版本可从 Microsoft 网站下载。然后单击 "创建 "生成控制台应用程序。

如何在 C# 中打开 Zip 文件:图 3 - 目标框架

这将从模板中创建默认项目,并将项目和解决方案文件存储在指定目录中。 项目创建完成后,其外观将如下所示。 有时,在最新版本的 program.cs 中并没有使用该类。

using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Imports System
' See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!")
Dim MyApp As namespace ' Note: actual namespace depends on the project name.
If True Then
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	internal class Program
'	{
'		static void Main(string [] args)
'		{
'			Console.WriteLine("Hello World!");
'		}
'	}
End If
$vbLabelText   $csharpLabel

要创建新的 ZIP 文件并提取所有 ZIP 压缩文件,我们可以使用默认库中的 System.IO.Compression。 在上述代码中,ZipFile.OpenReadZipFile.Open 静态方法可用于打开ZIP文件或提取ZIP文件。

using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
Imports System.IO.Compression
Console.WriteLine("-----------Zip - Unzip-----------")
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static void AddEntry(string filePath, System.IO.Compression.ZipArchive zipArchive)
'{
'	var file = Path.GetFileName(filePath); ' get file name in var file
'	zipArchive.CreateEntryFromFile(filePath, file);
'}
Dim zip = "myFile.zip"
Using archive As System.IO.Compression.ZipArchive = ZipFile.OpenRead(zip, ZipArchiveMode.Create)
	AddEntry(file1, archive)
	AddEntry(file2, archive)
End Using
Dim dirToExtract = "extract"
If Directory.Exists(dirToExtract) = False Then
	Directory.CreateDirectory(dirToExtract)
End If
ZipFile.ExtractToDirectory(zip, dirToExtract) 'extracted file
$vbLabelText   $csharpLabel

在上述代码中,我们有一个名为 myFile.zip 的 ZIP 文件,并使用了系统命名空间。 OpenRead 方法用于以指定模式打开 ZIP 文件。 这也可用于创建新的 ZIP 压缩文件。 打开后,我们可以使用方法AddEntry添加一个新的存档条目,然后使用ExtractToDirectory将ZIP存档文件或选定文件提取到指定目录。 检查目录是否存在。 如果不存在,则使用Directory.CreateDirectory创建目录。 dirToExtract是解压ZIP归档文件的目录路径。 代码中的最后一行ZipFile.ExtractToDirectory(zip, dirToExtract)提取了一个ZIP文件。所有文件都保存在目录路径中。

步骤 2.使用 NuGet 软件包管理器安装 IronZIP

从 Visual Studio 打开项目管理器,搜索 IronZIP 软件包。 然后选择最新版本并点击安装。 您可以从下拉菜单中更改要安装的版本。 然后点击安装。

如何在 C# 中打开 Zip 文件:图 4 - NuGet 软件包管理器

使用 IronZIP 创建 ZIP 归档文件并添加文件

如何在C#中打开ZIP文件:图5 - IronZIP

IronZIP 是由 Iron Software 开发的归档压缩和解压缩库。 除了广泛使用的ZIP格式外,它还可以处理TAR、GZIP和BZIP2。

IronZIP 是一个 C# ZIP 压缩库,优先考虑准确性、易用性和速度。 用户友好的 API 使开发人员能够在几分钟内轻松地将归档功能添加到现代 .NET 项目中。

IronZIPSystem.Io.Compression 库相比有许多优势。 您可以在压缩过程中指定所需的压缩率,还可以使用不同的压缩算法 ZIP、TAR、GZIP 和 BZIP2。它还支持移动、网络和桌面平台以及各种 .NET 版本。

使用 IronZIP 创建 ZIP 归档文件并添加文件

IronZIP 拥有 IronArchive 类,该类可用于创建 ZIP 文件,以及提取 ZIP 文件,并支持使用单个库创建 TAR、GZIP 和 BZIP2 压缩文件。 以下是创建 ZIP 文件的代码。IronArchive 类用于创建/打开 ZIP 文件,然后对其进行归档。Add 方法用于向归档添加文件条目,如下所示。

// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

初始源代码包含指定 ZIP 压缩文件名称和检查指定目录是否存在所需的设置。 然后我们使用Add方法将文件存档以创建ZIP文件。 压缩参数中的第二个参数为 1 表示较低,9 表示较高。 txt 文件可以最大使用 9 压缩而不会丢失,图像文件可以使用较低的压缩率以避免数据丢失。

使用 IronZIP 打开 ZIP 压缩文件

IronArchive 类也可以用于从 ZIP 压缩文件中提取文件。所有文件都使用 IronArchive.ExtractArchiveToDirectory 提取到指定目录,具体如下。

var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
Dim extractionPath = "IronZipFiles"
' extract files from zip
If Directory.Exists(extractionPath) = False Then
	Directory.CreateDirectory(extractionPath)
End If
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath)
$vbLabelText   $csharpLabel

上述代码将 ZIP 文件提取到一个目录中。 代码会检查目录是否存在,然后将 ZIP 压缩文件解压缩到指定目录。

许可(可免费试用)

上述代码需要许可证密钥才能使用。 此密钥需要放在 appsettings.json 中

"IronZip.LicenseKey": "your lincese key"
"IronZip.LicenseKey": "your lincese key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronZip.LicenseKey": "your lincese key"
$vbLabelText   $csharpLabel

开发人员可以在此处注册以获取试用许可证,并且不需要信用卡。 您可以提供电子邮件 ID 并注册免费试用。

在现有 ZIP 压缩文件中添加文件

使用静态FromFile方法从IronZIP中打开一个现有的档案。此方法还需要指定将作为输出创建的新档案的文件名。

//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
'add to existing archive
Const file3 As String = ".\image3.png"
Dim archivePlusPath = "ironZipPlus.zip"
Using file = IronArchive.FromFile(archivePath, archivePlusPath)
	' Add files
	file.Add(file3)
End Using
$vbLabelText   $csharpLabel

该代码使用IronArchive.FromFile静态void方法打开现有的ZIP文件,然后将新文件添加为归档条目。 一旦文件被处理,那么文件就会被成功保存。

更新

IronZIP库会根据客户/用户的反馈不断更新,所有更新可以在这里找到。

结论

总之,在云主机提供商收取存储和数据传输费用的现代应用程序开发中,ZIP 文件编程是一项必不可少的技能。 掌握这项技能可以帮助程序员降低应用程序的成本,提高应用程序的性能。

通过遵循安装步骤并探索提供的代码示例,开发人员可以快速利用IronZIP的强大功能轻松创建新文件并处理Zip/Unzip任务。 随着越来越多的应用程序现代化并迁移到云端,拥有像IronZIP这样的可靠ZIP库,装备C#开发人员以满足现代应用程序开发的需求。 因此,拥抱IronZIP的强大功能,为您的C#应用程序解锁处理ZIP文件的新可能性。

IronZIP 为其开发人员提供广泛的支持。 要了解更多关于IronZIP如何在C#中工作的信息,请访问此处。 IronZIP 提供免费试用许可证,这是了解 IronZIP 及其功能的好机会。

Iron Software 拥有多种其他库,探索它们以获得更多知识并更新您的技能,以编程/开发现代应用程序。

查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。
< 前一页
如何在.NET Core中解压文件
下一步 >
如何在C# .NET Core中创建Zip文件

准备开始了吗? 版本: 2025.4 刚刚发布

查看许可证 >