C#使用Windows自带功能将文件夹打包为ZIP

 更新时间:2026年02月25日 09:02:28   作者:Never_Satisfied  
文章介绍了如何在C#中使用System.IO.Compression命名空间将文件夹打包为ZIP文件,并提供了基本用法、高级选项、异常处理、引用命名空间和完整示例,还提到了其他注意事项,如使用第三方库和异步处理,需要的朋友可以参考下

在 C# 中,可以使用内置的 System.IO.Compression 命名空间轻松地将整个文件夹打包为 ZIP 文件。最直接的方法是使用 ZipFile.CreateFromDirectory 方法。

基本用法

using System.IO.Compression;

string sourceFolder = @"C:\SourceFolder";      // 要压缩的文件夹
string zipFile = @"C:\Archive.zip";            // 生成的 ZIP 文件路径

ZipFile.CreateFromDirectory(sourceFolder, zipFile);

该方法会将 sourceFolder 中的所有文件和子文件夹递归地添加到 ZIP 文件中。

高级选项

CreateFromDirectory 有多个重载,允许你控制压缩行为:

// 带 CompressionLevel 和 includeBaseDirectory 参数的重载
ZipFile.CreateFromDirectory(
    sourceFolder,
    zipFile,
    CompressionLevel.Optimal,   // 压缩级别(Optimal, Fastest, NoCompression)
    true                        // 是否在 ZIP 中包含源目录本身作为根目录
);
  • includeBaseDirectory:如果为 true,则 ZIP 文件中会包含源文件夹本身作为根目录(即解压后会出现一个与源文件夹同名的文件夹);如果为 false,则源文件夹下的所有内容直接位于 ZIP 根目录。
  • 还可以使用 EntryNameEncoding 参数指定文件名编码,或通过 Overwrite 参数控制是否覆盖已存在的 ZIP 文件(在 .NET 6+ 中)。

异常处理

注意捕获可能的异常,例如:

  • DirectoryNotFoundException:源文件夹不存在。
  • IOException:目标 ZIP 文件已存在且被占用等。
  • UnauthorizedAccessException:无权限访问文件。

添加对命名空间的引用

  • .NET Framework 4.5+:需要添加对 System.IO.Compression.FileSystem 的程序集引用。
  • .NET Core / .NET 5+:直接使用 System.IO.Compression 命名空间即可(通常已默认包含)。

完整示例

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

class Program
{
    static void Main()
    {
        string folderPath = @"C:\MyFolder";
        string zipPath = @"C:\MyFolder.zip";

        try
        {
            // 检查源文件夹是否存在
            if (!Directory.Exists(folderPath))
            {
                Console.WriteLine("源文件夹不存在。");
                return;
            }

            // 如果目标 ZIP 文件已存在,可选择删除或覆盖
            if (File.Exists(zipPath))
            {
                File.Delete(zipPath);   // 或者使用 Overwrite 参数(.NET 6+)
            }

            // 创建 ZIP 文件,不包含基目录
            ZipFile.CreateFromDirectory(folderPath, zipPath, CompressionLevel.Optimal, false);

            Console.WriteLine($"文件夹已成功打包为:{zipPath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"出错:{ex.Message}");
        }
    }
}

其他注意事项

  • 如果需要在压缩过程中过滤文件、处理大文件或显示进度,建议使用第三方库,如 SharpCompressDotNetZip(注意许可证)。
  • 在 ASP.NET 应用中,可能需要使用异步方式,可以考虑将 CreateFromDirectory 包装在 Task.Run 中,或使用 .NET 6+ 提供的异步版本(如 ZipFile.CreateFromDirectoryAsync)。

使用内置的 ZipFile 类足以满足大多数简单到中等复杂度的文件夹打包需求。

到此这篇关于C#使用Windows自带功能将文件夹打包为ZIP的文章就介绍到这了,更多相关C# Windows将文件夹打包为ZIP内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    这篇文章主要介绍了C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法,涉及C#使用WinForm针对窗口操作的各种常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • 详解LINQ入门(下篇)

    详解LINQ入门(下篇)

    这篇文章主要介绍了详解LINQ入门(下篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C#算法设计之关于1000瓶水的问题

    C#算法设计之关于1000瓶水的问题

    这篇文章主要介绍了C#算法设计之关于1000瓶水的问题,是一个比较经典的算法问题,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C#中动态数组用法实例

    C#中动态数组用法实例

    这篇文章主要介绍了C#中动态数组用法,实例分析了C#中ArrayList实现动态数组的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#用NPOI导出导入Excel帮助类

    C#用NPOI导出导入Excel帮助类

    这篇文章主要为大家详细介绍了C# NPOI导出导入Excel帮助类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#中使用WinRAR实现加密压缩及解压缩文件

    C#中使用WinRAR实现加密压缩及解压缩文件

    这篇文章主要介绍了C#中使用WinRAR实现加密压缩及解压缩文件,本文直接给出实例代码,代码中包含详细注释,需要的朋友可以参考下
    2015-07-07
  • C# Codex 脚本编写功能示例

    C# Codex 脚本编写功能示例

    该C#示例实现了一个简单的脚本引擎,支持自定义命令、参数解析、注释、字符串参数和保留执行结果,此示例可展示了基础框架,可进一步扩展更多复杂功能,感兴趣的朋友一起看看吧
    2026-04-04
  • C#实现异步连接Sql Server数据库的方法

    C#实现异步连接Sql Server数据库的方法

    这篇文章主要介绍了C#实现异步连接Sql Server数据库的方法,涉及C#中await方法的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • .NET/C# 使用Stopwatch测量运行时间

    .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • C#实现将Excel表格转换为图片(JPG/ PNG)

    C#实现将Excel表格转换为图片(JPG/ PNG)

    Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C#实现将Excel表格转换为图片吧
    2025-04-04

最新评论