在本文中,我们使用ZipFile在C#中创建、读取和提取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);
我们在ZipArchiveMode.Create中使用ZipFile.Open打开ZIP存档。
foreach (var file in files)
{
archive.CreateEntryFromFile(file, Path.GetFileName(file));
}
我们使用CreateEntryFromFile将文件添加到存档。
在本文中,我们在C#中使用了ZipFile。
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属性,我们检索ZIParchive中的所有文件。
列出所有C#教程。
