利用7z来分卷压缩文件

最近做一个发送Email的小工具,里面有个附件的功能,

如果附件太大了,一般都是用winara 分卷压缩的,然后在上传。

如何用程序来实现自动的分卷压缩的呢?因为RAR不是免费的,就上网找了7z

 

安装好7z,把7z.dll拷贝到程式的目录下,引用SevenZipSharp这个DLL

引进 using SevenZip.Sdk.Compression;
using SevenZip; 这两个命名空间

 

ExpandedBlockStart.gif 代码
  ///   <summary>
         
///  切割文件,当文件的大小大于配置文件的容量中,就切割文件
         
///   </summary>
         
///   <param name="filePath">  User下PDF文件的路径eg User/2000/01/01/xxxx.pdf </param>
         
///   <param name="descDecPath"> User/2000/01/01/temp </param>
         
///   <returns></returns>
          public   bool  SplitFile( string  filePath, string  descDecPath)
         {
             FileInfo fInfo 
=   new  FileInfo(filePath);
             
string  copyFilePath  =  Path.Combine(descDecPath, fInfo.Name);
             
// if (fInfo.Length <= this.fileSize) return false;
             
             
if  ( ! Directory.Exists(descDecPath))
             {
                 Directory.CreateDirectory(descDecPath);
             }
             File.Copy(filePath, copyFilePath);
             Application.DoEvents();

             SevenZipCompressor tmp 
=   new  SevenZipCompressor();
             SevenZipCompressor.SetLibraryPath(Application.StartupPath 
+   " /7z.dll " );
             
// tmp.VolumeSize =fInfo.Length <=  this.fileSize ? 0 :this.fileSize;
              tmp.VolumeSize  =   this .fileSize; // 卷的大小,最大只能分离1000个文件
             tmp.ArchiveFormat  =  OutArchiveFormat.SevenZip;
             tmp.CompressDirectory(descDecPath,copyFilePath );

             File.Delete(copyFilePath);
//  删除Copy的文件

             
if  (Directory.GetFiles(descDecPath).Length  ==   1 )
             {
                 
foreach  ( string  path  in  Directory.GetFiles(descDecPath))
                 {
                     File.Delete(path);
                 }
                 tmp.VolumeSize 
=   0 ;
                 tmp.CompressFiles(copyFilePath
+ " .7z "  ,
                                   
new   string [] { filePath }); // 压缩文件

             }
             Application.DoEvents();
             
return   true ;


         }

 

由于没有文件的分卷压缩的类库,所以我求其次,用文件夹的分卷压缩,先把文件copy到一个临时的文件夹中,然后对这个临时的文件夹进行分卷压缩

见代码:

 

转载于:https://www.cnblogs.com/86188281/archive/2010/02/09/1666262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 7z是一种开源的压缩文件格式,它具有强大的压缩和解压功能。在解压缩过程中,7z解压软件可以帮助用户将7z格式的压缩文件压缩为原始的文件。 CSDN是一个知名的技术交流平台,提供大量的技术文档和资料供用户学习和参考。在CSDN上,可以找到各种软件的资源和使用指南。 当我们需要解压缩一个7z格式的压缩文件时,可以使用7z解压软件。首先,我们需要下载并安装7z解压软件到电脑上。安装完成后,找到我们需要解压的7z压缩文件,右键点击该文件,选择使用7z解压软件进行解压缩。 在解压缩过程中,7z解压软件会自动识别并解压缩7z格式的文件。解压完成后,我们可以找到解压后的原始文件,并进行查看和使用。 总的来说,7z解压软件是一种方便实用的解压工具,而CSDN则是一个提供技术资源的平台。通过使用7z解压软件和在CSDN上查找相关资料,我们可以更好地利用和学习7z格式的压缩和解压缩技术。 ### 回答2: 7z解压软件是一款免费且功能强大的压缩文件解压工具。CSND是一家著名的技术社区,提供了很多技术相关的资源和教程。 7z解压软件可以帮助用户解压各种常见的压缩文件格式,比如zip、rar、tar等等。它支持多线程解压,可以大大提高解压速度,节省用户的时间。同时,它还具备压缩文件的功能,用户可以使用7z解压软件来创建压缩文件,将多个文件文件夹打包成一个文件,方便传输和存储。 7z解压软件具有良好的兼容性,它可以在多个操作系统上运行,包括Windows、Mac和Linux等。用户可以根据自己的需求选择适合自己操作系统的版本进行安装。 CSND作为一个技术社区,提供了很多有关7z解压软件的相关资源和教程。用户可以在CSND上找到关于如何安装、使用和优化7z解压软件的详细指导。此外,CSND还有很多其他的技术资源,比如编程教程、开发工具等等,用户可以通过CSND来获取他们所需要的技术支持和知识。 总之,7z解压软件是一款实用且方便的工具,CSND作为一个技术社区为用户提供了相关的资源和教程,帮助用户更好地使用和了解7z解压软件。 ### 回答3: 7z解压软件是一款功能强大的压缩文件解压工具,它支持多种格式的文件解压,其中包括7z、ZIP、RAR、TAR等常见的压缩格式。这款软件具有高压缩比、加密保护、自动分卷等多种特点和功能。 首先,7z解压软件具有高压缩比的优势,它能够将文件以更小的体积进行存储和传输,这对于节省硬盘空间和网络带宽非常有帮助。同时,由于7z采用了先进的压缩算法,解压缩速度也很快,能够有效提高工作效率。 其次,7z解压软件支持加密保护功能,可以对压缩文件进行密码加密,确保文件的安全性。这对于包含敏感信息或个人隐私的文件来说非常重要,能够有效防止文件被他人非法访问。 此外,7z解压软件还具备自动分卷功能,即将大文件自动分割成多个较小的压缩包,方便存储和传输。当我们需要传输大文件时,可以将其分卷打包,上传或发送后再进行合并解压,这样能够更加稳定和高效地完成操作。 总之,7z解压软件是一款功能强大、操作简便的压缩文件解压工具。它的高压缩比、加密保护和自动分卷等特点,使得我们能够更加方便地进行文件的传输、存储和保护,提高工作和生活的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值