使用IRONZIP

如何在C#中打开Zip文件

发布 2024年一月4日
分享:

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

在本博客中,我们将探讨一种现代、简便、高效的方法,使用以下工具打开 ZIP 压缩文件或解压文件IronZIP. 我们将从总体上了解 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
VB   C#

要创建新的 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
VB   C#

在上述代码中,我们有一个名为 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是一个归档压缩和解压缩库,由铁软件. 除了广泛使用的ZIP格式外,它还可以处理TAR、GZIP和BZIP2。

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

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

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

IronZIPIronArchive 有一个类IronArchive,可用于创建 ZIP 文件和解压缩 ZIP 文件,还支持使用单个库创建 TAR、GZIP 和 BZIP2 归档文件。 以下是创建 ZIP 文件的代码。IronArchive类创建/打开 ZIP 文件,然后使用 archive.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
VB   C#

初始源代码包含指定 ZIP 压缩文件名称和检查指定目录是否存在所需的设置。 然后,我们使用 "添加 "方法将文件归档以创建 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)
VB   C#

上述代码将 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"
VB   C#

开发人员在注册时可获得试用许可证这里是的,试用许可证无需信用卡。 您可以提供电子邮件 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
VB   C#

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

更新

IronZIP 库会根据客户/用户的反馈不断更新,所有更新内容均可在以下网站找到这里.

结论

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

开发人员只需按照安装步骤操作,并探索所提供的代码示例,就能快速利用IronZIP您可以使用该工具创建新文件并轻松处理 Zip/Unzip 任务。 随着越来越多的应用程序实现现代化并迁移到云中,拥有一个可靠的 ZIP 库(如IronZIPC# 开发人员掌握必要的工具,以满足现代应用程序开发的需求。 因此,请拥抱IronZIP并为您在 C# 应用程序中处理 ZIP 文件开启新的可能性。

IronZIP为开发者提供广泛的支持。 欲了解更多有关如何IronZIP有关 C# 作品,请访问此处。 IronZIP提供免费试用许可证,这是了解IronZIP及其功能。

铁软件还有其他各种库,探索它们,获取更多知识,更新编程/开发现代应用程序的技能。

< 前一页
如何在.NET Core中解压文件
下一步 >
如何在C# .NET Core中创建Zip文件

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

免费NuGet下载 总下载量: 5,596 查看许可证 >