编辑
2025-09-28
C#
00

目录

摘要
正文
常用属性与方法
创建 ZIP 文件
压缩整个目录
解压 ZIP 文件
压缩和解压单个文件
总结

摘要

ZipArchive 类是 C# 中用于处理 ZIP 文件的类。它提供了一组方法和属性,可以方便地创建、压缩和解压 ZIP 文件。本文将介绍 ZipArchive 类的常用属性和方法,并提供一些示例代码来说明如何使用它们。

正文

常用属性与方法

除了上述示例中使用的属性和方法外,ZipArchive 类还提供了许多其他有用的属性和方法,以下是一些常用的:

  • Entries:获取 ZIP 文件中的所有条目。
  • GetEntry(string entryName):根据条目名称获取 ZIP 文件中的条目。
  • CreateEntry(string entryName):创建一个 ZIP 文件中的条目。
  • ExtractToDirectory(string destinationDirectoryName):将 ZIP 文件中的所有文件和目录解压到指定的目录中。
  • Dispose():释放 ZipArchive 对象占用的资源。

创建 ZIP 文件

要创建 ZIP 文件,我们可以使用 ZipArchive 类的构造函数创建一个新的 ZIP 文件。构造函数接受一个 Stream 对象和一个 ZipArchiveMode 枚举值作为参数。我们可以使用 FileStreamMemoryStream 来创建 Stream 对象,然后将其传递给构造函数。

C#
static void Main(string[] args) { string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed.zip"; using (FileStream zipStream = new FileStream(zipFile, FileMode.Create)) { using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) { Console.WriteLine("ZIP file created."); } } }

image.png

在上面的示例中,我们指定了要创建的 ZIP 文件的路径 zipFile。然后,我们使用 FileStream 创建一个新的文件流 zipStream,并将其传递给 ZipArchive 类的构造函数。我们还指定了 ZipArchiveMode.Create 作为构造函数的第二个参数,以指示我们要创建一个新的 ZIP 文件。在 using 语句块中,我们可以执行其他与 ZIP 文件相关的操作。在这个示例中,我们只是输出一条消息来表示 ZIP 文件已经成功创建。

压缩整个目录

要压缩整个目录,我们可以使用 ZipFile 类的 CreateFromDirectory 方法。该方法接受三个参数:要压缩的目录的路径、要生成的 ZIP 文件的路径和一个枚举值,用于指定是否包括目录结构。

C#
static void Main(string[] args) { string sourceDirectory = "D:\\BaiduSyncdisk\\11Test\\CHelpers\\obj"; string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed1.zip"; if(File.Exists(zipFile) ) { File.Delete(zipFile); } ZipFile.CreateFromDirectory(sourceDirectory, zipFile, CompressionLevel.Optimal, false); Console.WriteLine("Directory compressed."); }

image.png

解压 ZIP 文件

要解压 ZIP 文件,我们可以使用 ZipFile 类的 ExtractToDirectory 方法。该方法接受两个参数:要解压的 ZIP 文件的路径和要生成的目录的路径。

C#
static void Main(string[] args) { string extractDirectory = "D:\\BaiduSyncdisk\\11Test\\obj1"; string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed1.zip"; ZipFile.ExtractToDirectory(zipFile, extractDirectory); Console.WriteLine("ZIP file extracted."); }

压缩和解压单个文件

除了压缩和解压整个目录,我们还可以压缩和解压单个文件。要压缩单个文件,我们可以使用 ZipArchive 类的 CreateEntryFromFile 方法。要解压单个文件,我们可以使用 ZipArchiveEntry 类的 ExtractToFile 方法。

C#
static void Main(string[] args) { string sourceFile = "D:\\BaiduSyncdisk\\11Test\\测试导入数据2.csv"; string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed3.zip"; string extractFile = "D:\\BaiduSyncdisk\\11Test\\extracted.csv"; using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open)) { using (FileStream zipStream = new FileStream(zipFile, FileMode.Create)) { using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) { ZipArchiveEntry entry = archive.CreateEntry(Path.GetFileName(sourceFile)); using (Stream entryStream = entry.Open()) { sourceStream.CopyTo(entryStream); } } } } using (FileStream zipStream = new FileStream(zipFile, FileMode.Open)) { using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Read)) { ZipArchiveEntry entry = archive.GetEntry(Path.GetFileName(sourceFile)); entry.ExtractToFile(extractFile); } } Console.WriteLine("File compressed and extracted."); }

image.png

在上面的示例中,我们首先使用 FileStream 读取源文件 sourceFile 的内容,然后使用 ZipArchive 类创建一个 ZIP 文件,并使用 CreateEntry 方法将源文件的内容添加到 ZIP 文件中。然后,我们使用 FileStream 打开 ZIP 文件,并使用 ZipArchive 类获取 ZIP 文件中的条目,然后使用 ExtractToFile 方法将条目解压到指定的文件中。最后,我们使用 Console.WriteLine 输出一条消息,表示单个文件已经成功压缩和解压。

总结

使用 C# 中的 ZipArchive 类,我们可以轻松地进行 ZIP 文件的压缩和解压操作。本文详细介绍了如何创建 ZIP 文件、压缩整个目录、解压 ZIP 文件以及压缩和解压单个文件的方法。此外,我们还介绍了一些常用的属性和方法,以便更好地理解和使用 ZipArchive 类。根据实际需求和场景,我们可以灵活地使用这些功能来处理 ZIP 文件。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!