源代码压缩包怎么运行(C使用原生)

Zip 是一个非常常见的压缩包格式,本文主要用于说明如何使用代码 将文件或文件夹压缩为 zip压缩包及其解压操作,我们采用的是 微软官方的实现,所以也不需要安装第三方的组件包,下面我们就来说一说关于源代码压缩包怎么运行?我们一起去了解并探讨一下这个问题吧!

源代码压缩包怎么运行(C使用原生)

源代码压缩包怎么运行

Zip 是一个非常常见的压缩包格式,本文主要用于说明如何使用代码 将文件或文件夹压缩为 zip压缩包及其解压操作,我们采用的是 微软官方的实现,所以也不需要安装第三方的组件包。

使用的时候记得 using System.IO.Compression;

/// <summary> /// 将指定目录压缩为zip文件 /// </summary> /// <param name="folderPath">文件夹地址 D:/1/ </param> /// <param name="zipPath">zip地址 D:/1.zip </param> public static void CompressDirectoryZip(string folderPath, string zipPath) { DirectoryInfo directoryInfo = new(zipPath); if (directoryInfo.Parent != null) { directoryInfo = directoryInfo.Parent; } if (!directoryInfo.Exists) { directoryInfo.Create(); } ZipFile.CreateFromDirectory(folderPath, zipPath, CompressionLevel.Optimal, false); }

其中 CompressionLevel 是个枚举,支持下面四种类型

枚举

注解

Optimal

0

压缩操作应以最佳方式平衡压缩速度和输出大小。

Fastest

1

即使结果文件未可选择性地压缩,压缩操作也应尽快完成。

NoCompression

2

该文件不应执行压缩。

SmallestSize

3

压缩操作应尽可能小地创建输出,即使该操作需要更长的时间才能完成。

我方法这里直接固定了采用 CompressionLevel.Optimal,大家可以根据个人需求自行调整。

/// <summary> /// 将指定文件压缩为Zip文件 /// </summary> /// <param name="filePath">文件地址 D:/1.txt </param> /// <param name="zipPath">zip地址 D:/1.zip </param> public static void CompressFileZip(string filePath, string zipPath) { FileInfo fileInfo = new FileInfo(filePath); string dirPath = fileInfo.DirectoryName?.Replace("\\", "/") "/"; string tempPath = dirPath Guid.NewGuid() "_temp/"; if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } fileInfo.CopyTo(tempPath fileInfo.Name); CompressDirectoryZip(tempPath, zipPath); DirectoryInfo directory = new(tempPath); if (directory.Exists) { //将文件夹属性设置为普通,如:只读文件夹设置为普通 directory.Attributes = FileAttributes.Normal; directory.Delete(true); } }

压缩单个文件的逻辑其实就是先将我们要压缩的文件复制到一个临时目录,然后对临时目录执行了压缩动作,压缩完成之后又删除了临时目录。

/// <summary> /// 解压Zip文件到指定目录 /// </summary> /// <param name="zipPath">zip地址 D:/1.zip</param> /// <param name="folderPath">文件夹地址 D:/1/</param> public static void DecompressZip(string zipPath, string folderPath) { DirectoryInfo directoryInfo = new(folderPath); if (!directoryInfo.Exists) { directoryInfo.Create(); } ZipFile.ExtractToDirectory(zipPath, folderPath); }

至此 C# 使用原生 System.IO.Compression 实现 zip 的压缩与解压 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极地讨论交流

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页