压缩软件算的上是我们工作当中经常会使用到的一种小的工具软件,目前市面上这种软件,收费和免费的都很多,像360压缩、winrar等,都是大家使用比较多的,但是有时候这些免费软件也会弹出一些个广告来,总让人有些不悦,今天我就跟大家分享一个如何使用.NET 来开发一个自己的好用的压缩软件。
一、开发环境准备
开发环境: VS2017
开发语言: C#
开源组件: SharpZipLib
首先大家准备好VS2017开发环境,新建一个WPF项目,名称为:EasyZipTools
然后再新建一个classlib的c# dll 项目:EasyZipMenu
这个包提供了我们需要的核心功能,详细的开发文档大家可以去https://icsharpcode.github.io/SharpZipLib/help/api/index.html
查看,这里我主要跟大家分享一下 zip包的文件流式压缩方法,zip包的压缩方法:
压缩核心代码
这里主要说一下StreamUtils这个工具类,这个类它提供了一个Copy方法,能够在写入数据的同时给到我们相关的压缩进度,这块是我们想要的,如果你直接使用的是ZipFile来压缩的话,就得不到压缩进度,显得不友好了,那么它这个压缩的进度是通过一个委托回调回来的,委托的原型是:
ProgressEventArgs里面就包含了当前的压缩进度
其他的压缩方法,我们也是使用类似的方法,比如tar:
对于GZip,和 bzip2的压缩格式,如果式文件夹压缩,一般的做法是先进行tar归档压缩,然后再使用gzip或者bzip来压缩,所以我们的程序里面也是分两步来完成:
以上就是核心的压缩代码大家可以参考,想要完整的代码,文末有我开源的完整源码地址
解压核心代码:
ZIP解压:
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFile))) { ZipEntry theEntry; const int size = 2048; byte[] data = new byte[size]; string cpSubdir = string.Empty; while ((theEntry = s.GetNextEntry()) != null) {if(isAbortCompress){ break;声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!