e){entryTotal=e.Item.Size;info_builde1="提取文件:"e.Item.Key";";}privatevoidarchive_FilePartExtractionBegin(objectsender,FilePartExtractionBeginEventArgse){partTotal=e.Size;info_builde2="分卷:"e.Name";";}privatevoidarchive_CompressedBytesRead(objectsender,CompressedBytesReadEventArgse){stringpercentage=entryTotal.HasValue?CreatePercentage(e.CompressedBytesRead,entryTotal.Value).ToString():"Unknown";info_builde=info_builde1info_builde2"字节:"e.CompressedBytesRead";百分比:"percentage"%";this.CrossThreadCalls(()=>{compress_Info.Text=info_builde;progress[1].Value=int.Parse(percentage)>100||int.Parse(percentage)<0?100:int.Parse(percentage);if(volumes<2)progress[0].Value=progress[1].Value;Application.DoEvents();});}privateintCreatePercentage(longn,longd){return(int)(((double)n/(double)d)*100);}-IMDN开发者社群-imdn.cn"> e){entryTotal=e.Item.Size;info_builde1="提取文件:"e.Item.Key";";}privatevoidarchive_FilePartExtractionBegin(objectsender,FilePartExtractionBeginEventArgse){partTotal=e.Size;info_builde2="分卷:"e.Name";";}privatevoidarchive_CompressedBytesRead(objectsender,CompressedBytesReadEventArgse){stringpercentage=entryTotal.HasValue?CreatePercentage(e.CompressedBytesRead,entryTotal.Value).ToString():"Unknown";info_builde=info_builde1info_builde2"字节:"e.CompressedBytesRead";百分比:"percentage"%";this.CrossThreadCalls(()=>{compress_Info.Text=info_builde;progress[1].Value=int.Parse(percentage)>100||int.Parse(percentage)<0?100:int.Parse(percentage);if(volumes<2)progress[0].Value=progress[1].Value;Application.DoEvents();});}privateintCreatePercentage(longn,longd){return(int)(((double)n/(double)d)*100);} - IMDN开发者社群-imdn.cn">
登录
首页 » C# » 解压缩文件示例(rar、zip、7zip、Gzip、tar...等)

解压缩文件示例(rar、zip、7zip、Gzip、tar...等)

于 2019-07-21 发布
0 282
下载积分: 1 下载次数: 1

代码说明:

本程序是基于 sharpcompress-master 设计的演示程序。开原地址:https://github.com/adamhathcock/sharpcompress。1. 程序主要展示了压缩文件的解压缩,支持的文件类型有:rar、zip、7zip、Gzip、tar......等压缩格式,展示了密码解压、分卷解压、解压进度等功能。2. 不支持“带密码的分卷压缩文件”的解压;无密码分卷压缩、单个带密码文件正常解压。3. 此程序在设计中,对组件源代码进行了修改,与原组件代码对照查看。4、sharpcompress-master组件功能繁多,比如,文件压缩为图片、压缩文件内文件添加删除、更名等等,对照现有的压缩软件,功能均具备,可在代码中查看使用。本示例只是展示了解压缩功能。此程序为识别全部压缩格式,未引用DLL,全部为cs文件,如有错误,自行对照修正。private void Uncompress(string archiveFile, string destinationPath, string password = null) { var archive = ArchiveFactory.Open(archiveFile, new ReaderOptions() { Password = password, LeaveStreamOpen = true }); volumes = archive.Entries.Count(); archive.EntryExtractionBegin = archive_EntryExtractionBegin; archive.FilePartExtractionBegin = archive_FilePartExtractionBegin; archive.CompressedBytesRead = archive_CompressedBytesRead; Task.Run(() => { long order = 0; foreach (var entry in archive.Entries) { if (!entry.IsDirectory) { entry.WriteToDirectory(destinationPath, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true, }); } order ; this.CrossThreadCalls(() => { if (volumes > 1) { progress[0].Value = CreatePercentage(order, volumes); } }); } MessageBox.Show("解压缩任务完成 !"); }); } private void archive_EntryExtractionBegin(object sender, ArchiveExtractionEventArgs e) { entryTotal = e.Item.Size; info_builde1 = "提取文件: " e.Item.Key ";"; } private void archive_FilePartExtractionBegin(object sender, FilePartExtractionBeginEventArgs e) { partTotal = e.Size; info_builde2 = "分卷:" e.Name ";"; } private void archive_CompressedBytesRead(object sender, CompressedBytesReadEventArgs e) { string percentage = entryTotal.HasValue ? CreatePercentage(e.CompressedBytesRead, entryTotal.Value).ToString() : "Unknown"; info_builde = info_builde1 info_builde2 "字节:" e.CompressedBytesRead ";百分比:" percentage "%"; this.CrossThreadCalls(() => { compress_Info.Text = info_builde; progress[1].Value = int.Parse(percentage) > 100 || int.Parse(percentage) < 0 ? 100 : int.Parse(percentage); if (volumes < 2) progress[0].Value = progress[1].Value; Application.DoEvents(); }); } private int CreatePercentage(long n, long d) { return (int)(((double)n / (double)d) * 100); }

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • C# 读写excel表 例子源码下载
    C# 读写excel表 例子源码下载
    2014-11-04下载
    积分:1
  • asp.net大上传实例【附全部源码下载】
    可上传上小于1G的文件,可以配置Web.config文件来设定上传文件的大小。 完全基于.NET开发,无需任何客户端配置。 提供同步的上传进度条,显示实时上传进度信息。 不破坏页面逻辑,提供类似ASP.NET内置上传组件的使用方法。 不受 Server.ScriptTimeout(请求的超时设置) 影响,可配置服务器处理时间。
    2013-02-18下载
    积分:1
  • jquery.uploadify 上传实例源码下载
    Handler 里的文件 主要是创建文件夹 和文件用的.Upload 里的Index文件 是前台的调用 取你需要的UploadFile 我们这边是临时文件夹 上传成功 会吧文件删除 根据你的需求 不删就不用掉删除方法 DelFiles()uploadify 是他的源生js和css我们这边用的是MVC UploadController.cs 是控制器文件 里边有的方法是根据自己业务写的.UploadFileService 这个底层方法 里边有读取临时文件夹的 文档数据的方法 GetFileTempList()我把涉及到的 文件 都放进去了. 你可以根据代码看一下  这玩意我也没研究过 你先往你程序里套一下 哪不对咱在研究研究. 网络商场示例
    2015-01-27下载
    积分:1
  • C#web断点续传 例子源码下载
    C#web断点续传
    2015-04-10下载
    积分:1
  • Report报表组代码,提建议完善
    参考FastReport和https://www.codeproject.com的一些报表代码,去掉不常用的功能,对常用基本功能进行了设计。报表的编制、预览均自行编写代码没用使用PrintDocument的功能,只是在打印机上调用了PrintDocument。所以你可以灵活的修改界面和增加、去掉功能及调用方式等。程序编写为exe文件,未写为DLL,因为便于调试,有什么建议请留言,修改到位后改写为DLL方式。代码已按照DLL编写了,只要将里面的窗体去掉,改为 :new 窗体,其他不变,就可生成DLL。 原理:按照页头、页脚、内容分为3个栏目。如有数据库字段,内容栏不论位置,紧跟着页头栏,可在“栏目设置”将其最大化,来排列组件位置,非最大化,则根据页头、页脚之间的位置将内容栏按数据库记录顺序填充整页,可将其最大化,每页显示一条记录的多个字段。如报表无数据库字段,则按照内容栏实际位置预览打印。 测试过程,只提供A4纸张的设计,打印参数不做判断,为全部打印,份数1份。运行demo,先打开文件夹内部的 报表.rpt文件,demo1无数据库,直接打开报表,预览、打印demo2、3有数据库,在“数据链接”数据库中填写userdata.mdb,数据表在菜单中选择填写UserInfo后,可预览、打印,否则不能预览打印报表。 右键菜单在报表组件上可执行快捷功能,空白处可执行栏目设置、粘贴、打印预览功能。“打开报表”对话框有记忆功能,打开报表文件时,注意文件夹的选择。  
    2018-10-26下载
    积分:1
  • C# mp4 3gp flv avi 格式转换 完整实例源码下载,亲测通过
    视频格式转换,支持绝大部分视频格式("asf", "avi", "mpg", "3gp", "mov", "mp4",mp3)以上是测试过没问题的
    2013-08-24下载
    积分:1
  • npoi 导出 excel 以及 office导出 excel 比较项目
    npoi 导出 excel 以及 office导出 excel 比较项目
    2013-11-25下载
    积分:1
  • 类似百度库在线预览档flash版(支持word、excel、ppt、pdf)+在线预览档html版
    首先在ManageWenKu2Add.aspx中上传文档,之后在运行web下的index.html即可看到效果
    2019-02-10下载
    积分:1
  • 海康官方demo
    海康官方demo,包含操作文档
    2020-12-12下载
    积分:1
  • C#身份证读取(精伦C#身份证读取实例)
    C#身份证读取(精伦C#身份证读取实例)
    2018-07-17下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载