.NET怎么压缩和解压缩ZIP文件_ZIP文件压缩解压教程

来源:这里教程网 时间:2026-02-21 17:29:38 作者:

在 .NET 中处理 ZIP 文件非常方便,.NET Framework 4.5 及以上版本内置了 System.IO.Compression 命名空间,支持无需第三方库即可实现 ZIP 文件的压缩与解压。下面介绍如何使用原生 API 实现常见操作。

启用 ZIP 支持

确保项目中引用了以下命名空间:

using System.IO.Compression;
using System.IO;

如果使用的是 .NET Core 或 .NET 5+,这些功能默认可用。对于较老的 .NET Framework 项目,确认目标框架为 4.5 或更高。

压缩文件到 ZIP

使用 ZipFile.CreateFromDirectory() 可将整个文件夹压缩为 ZIP 文件。

示例:把 D:\MyFolder 压缩成 archive.zip

ZipFile.CreateFromDirectory(@"D:MyFolder", @"D:rchive.zip");

你也可以控制压缩级别和是否包含根目录:

ZipFile.CreateFromDirectory(
    @"D:MyFolder",
    @"D:rchive.zip",
    CompressionLevel.Optimal,
    false // 是否包含根目录
);

若只需压缩多个单独文件,可先将它们复制到临时目录再压缩,或手动创建 ZIP 存档:

using (var archive = ZipFile.Open(@"D: iles.zip", ZipArchiveMode.Create))
{
    archive.CreateEntryFromFile(@"D: ile1.txt", "file1.txt");
    archive.CreateEntryFromFile(@"D: ile2.jpg", "file2.jpg");
}

解压缩 ZIP 文件

使用 ZipFile.ExtractToDirectory() 可将 ZIP 文件解压到指定路径。

ZipFile.ExtractToDirectory(@"D:rchive.zip", @"D:OutputFolder");

如果目标目录已存在文件,默认会抛出异常。建议先检查或删除目标文件夹:

if (Directory.Exists(@"D:OutputFolder"))
    Directory.Delete(@"D:OutputFolder", true);
ZipFile.ExtractToDirectory(@"D:rchive.zip", @"D:OutputFolder");

如需更精细控制(例如跳过某些文件),可以打开 ZIP 存档并逐项处理:

using (var archive = ZipFile.OpenRead(@"D:rchive.zip"))
{
    foreach (var entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(Path.Combine(@"D:Output", entry.FullName), true);
        }
    }
}

注意事项

处理 ZIP 文件时注意以下几点:

路径分隔符建议使用反斜杠或 Path.Combine() 避免错误 压缩或解压大文件时考虑流式处理以减少内存占用 确保程序对源路径和目标路径有读写权限 使用 using 语句确保资源正确释放

基本上就这些。.NET 内置的 ZIP 功能足够应对大多数日常需求,不复杂但容易忽略细节。按上述方法操作,能快速实现文件压缩与解压功能。

相关推荐