在本文中,我们使用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#教程。