使用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 版本。如果你想使用特定版本进行开发,请指定你喜欢的版本,否则一定要选择最新的稳定版本来创建项目。最新版本可以从微软网站下载。然后点击 "创建 "生成控制台应用程序。

如何在 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 库相比有很多优点。您可以在压缩过程中指定所需的压缩率,还可以使用不同的压缩算法 ZIP、TAR、GZIP、BZIP2。它还支持移动、网络和桌面平台以及各种 .NET 版本。

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

IronZIP 类 "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 库创建新文件,并轻松处理 Zip/Unzip 任务。随着越来越多的应用程序实现现代化并迁移到云端,拥有一个可靠的 ZIP 库(如 IronZIP 为 C# 开发人员提供了满足现代应用程序开发需求的必要工具。因此,拥抱 IronZIP 并为在 C# 应用程序中处理 ZIP 文件提供新的可能性。

IronZIP 为其开发人员提供广泛支持。欲了解更多 IronZIP 如需了解 C# 工作原理,请访问此处。 IronZIP 提供免费试用许可证,这是了解 IronZIP 及其特点。

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

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

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

免费NuGet下载 总下载量: 4,045 查看许可证 >