C# ZipFile
最后修改于 2023 年 7 月 5 日
在本文中,我们使用 ZipFile 在 C# 中创建、读取和提取 ZIP 文件。
ZIP
ZIP 是一种支持无损数据压缩的归档文件格式。 一个 ZIP 文件可能包含一个或多个已被压缩的文件或目录。
ZipFile 提供了用于创建、提取和打开 zip 存档的静态方法。 它是 System.IO.Compression 包的一部分。
C# ZipFile.CreateFromDirectory
ZipFile.CreateFromDirectory 创建一个 zip 存档,其中包含指定目录中的文件和目录。
using System.IO.Compression;
string dirName = "data";
string zipName = "archive.zip";
if (File.Exists(zipName))
{
File.Delete(zipName);
}
ZipFile.CreateFromDirectory(dirName, zipName);
在本例中,我们从一个目录创建一个新的 ZIP 文件。
string dirName = "data"; string zipName = "archive.zip";
我们定义目录和 ZIP 存档的名称。
if (File.Exists(zipName))
{
File.Delete(zipName);
}
我们使用 File.Exists 检查该存档是否已存在。 如果存在,我们使用 File.Delete 删除它。
ZipFile.CreateFromDirectory(dirName, zipName);
ZipFile.CreateFromDirectory 的参数是目录名称和 ZIP 文件的名称。
C# ZipFile 包含指定文件
在下一个例子中,我们选择要包含在存档中的文件。
using System.IO.Compression;
string zipName = "archive.zip";
if (File.Exists(zipName))
{
File.Delete(zipName);
}
var files = Directory.GetFiles(@"data", "*.jpg");
using var archive = ZipFile.Open(zipName, ZipArchiveMode.Create);
foreach (var file in files)
{
archive.CreateEntryFromFile(file, Path.GetFileName(file));
}
该程序从指定目录获取所有 JPG 图像并从中创建一个存档。
var files = Directory.GetFiles(@"data", "*.jpg");
使用 Directory.GetFiles,我们找到所有与给定模式匹配的文件。
using var archive = ZipFile.Open(zipName, ZipArchiveMode.Create);
我们使用 ZipFile.Open 在 ZipArchiveMode.Create 中打开 ZIP 存档。
foreach (var file in files)
{
archive.CreateEntryFromFile(file, Path.GetFileName(file));
}
我们使用 CreateEntryFromFile 将文件添加到存档。
C# ZipFile.ExtractToDirectory
ZipFile.ExtractToDirectory 将指定 zip 存档中的所有文件提取到给定的目录。
using System.IO.Compression;
string dirName = "data2";
string zipName = "archive.zip";
if (Directory.Exists(dirName))
{
Directory.Delete(dirName, true);
}
ZipFile.ExtractToDirectory(zipName, dirName);
在本例中,我们将 ZIP 文件的内容提取到一个目录。
if (Directory.Exists(dirName))
{
Directory.Delete(dirName, true);
}
首先,我们使用 Directory.Exists 检查目录是否已存在,如果存在,则使用 Directory.Delete 删除它。
ZipFile.ExtractToDirectory(zipName, dirName);
我们使用 ZipFile.ExtractToDirectory 将存档提取到目录。
ZipFile.ExtractToDirectory 有一个重载,它接受 overwriteFiles 参数。 如果设置为 true,它将覆盖目标文件。
using System.IO.Compression; string dirName = "data2"; string zipName = "archive.zip"; ZipFile.ExtractToDirectory(zipName, dirName, true);
在本例中,我们使用 overwriteFiles 参数,而不是检查和删除目录。
C# ZipFile 读取内容
在下一个例子中,我们读取 ZIP 文件的内容。
using System.IO.Compression;
string zipFile = "data.zip";
using var archive = ZipFile.OpenRead(zipFile);
foreach (var entry in archive.Entries)
{
Console.WriteLine(entry.Name);
}
使用 ZipFile.Open,我们打开一个 zip 存档以进行读取。
foreach (var entry in archive.Entries)
{
Console.WriteLine(entry.Name);
}
通过 Entries 属性,我们检索 ZIP 存档中的所有文件。
来源
在本文中,我们使用 C# 处理了 ZIP 文件。
作者
列出所有 C# 教程。