百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

317.C# 文件压缩与解压Zip c# 文件夹压缩

bigegpt 2024-10-12 05:28 24 浏览

摘要


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 枚举值作为参数。我们可以使用 FileStream 或 MemoryStream 来创建 Stream 对象,然后将其传递给构造函数。

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.");
        }
    }

}

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

压缩整个目录

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

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.");
}

解压 ZIP 文件

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

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 方法。

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.");
}

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

总结

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

相关推荐

恢复软件6款汇总推荐,帮你减轻数据恢复压力!

在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...

中兴星星一号刷回官方原版recovery的教程

【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...

新玩机工具箱,Uotan柚坛工具箱软件体验

以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...

三星g906k刷recovery教程_三星g906k中文recovery下载

【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...

中兴星星2号刷recovery教程_星星二号中文recovery下载

【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...

数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!

在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...

中兴u956刷入recovery的教程(中兴e5900刷机)

【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...

联想A850+刷recovery教程 联想A850+第三方recovery下载

【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...

工具侠重大更新 智能机上刷机一条龙完成

工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...

shift+delete删除的文件找回6种硬盘数据恢复工具

硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...

使用vscode+Deepseek 实现AI编程 基于Cline和continue

尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...

使用VSCode来书写你的Jupyter Notebooks

现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...

使用VSCode模板提高Vue开发效率(vscode开发vue插件)

安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...

干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解

AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...