SharpCompress的压缩文件解压和文件夹压缩
1.前言
最近做一个功能需要用到对压缩文件的解压,就找到了这个SharpCompress不错,还能解压rar的文件。但是网上的资料和我拿到的SharpCompress.dll的方法有些出入,所以我就自己摸索了一下搞出来了,代码比较简单希望可以给大家带来帮助。
2.文件夹压缩
文件夹的压缩的话需要遍历文件夹下的所有的文件夹里的文件然后进行压缩,这里用了递归来获取文件夹下的所有的文件。具体代码如下:
/// <summary> /// 压缩文件夹 /// </summary> /// <param name="targetFile">压缩文件夹路径</param> /// <param name="zipFile">压缩后路径</param> public void Zips(string targetFile,string zipFile) { using (var archive = ZipArchive.Create()) { ZipRecursion(targetFile, archive); FileStream fs_scratchPath = new FileStream(zipFile, FileMode.OpenOrCreate, FileAccess.Write); archive.SaveTo(fs_scratchPath, CompressionType.Deflate); fs_scratchPath.Close(); } } /// <summary> /// 压缩递归 /// </summary> /// <param name="fullName">压缩文件夹目录</param> /// <param name="archive">压缩实体</param> public void ZipRecursion(string fullName,ZipArchive archive) { DirectoryInfo di = new DirectoryInfo(fullName);//获取需要压缩的文件夹信息 foreach (var fi in di.GetDirectories()) { if (Directory.Exists(fi.FullName)) { ZipRecursion(fi.FullName, archive); } } foreach (var f in di.GetFiles()) { archive.AddEntry(f.FullName, f.OpenRead());//添加文件夹中的文件 } }
3.压缩文件解压
文件夹解压就更加简单了,网上其他的文章解压rar和zip的方式不一样,但是我用的时候可以用一种方法就解压rar和zip的格式,具体如下:
/// <summary> /// 解压文件 /// </summary> /// <param name="targetFile">解压文件路径</param> /// <param name="zipFile">解压文件后路径</param> public static void Decompression(string targetFile, string zipFile) { var archive = ArchiveFactory.Open(targetFile); foreach (var entry in archive.Entries) { if (!entry.IsDirectory) { entry.WriteToDirectory(zipFile, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite); } } }
4.资源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!