zoukankan      html  css  js  c++  java
  • SevenZipSharp的入门教程(包含如何加密压缩,解密压缩)

              (一)为什么选择7z

                 7z 是一种主流高效的压缩格式,它拥有极高的压缩比。在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式。该格式最初被7-Zip实现并采用,但是这种档案格式是公有的,并且7-Zip软件本身亦在GNU宽通用公共许可证 (GNU LGPL)协议下       开放源代码。目前LZMA软件开发工具包的最新版本为V9.34。7z格式的MIME类型为application/x-7z-compressed。
                通常使用 7-Zip 的 7z 格式能比使用 zip 格式的压缩文件小 30-70%。
                并且使用 7-Zip 创建的 zip 格式比大多数其它压缩软件创建的都小 2-10%。

             (二) SevenZipSharp初始化工作

                  1、首先通过nuget获取 SevenZipSharp;

                  2、由于SevenZipSharp  是依赖于7z.dll的,所以你要单独添加7z.Dll放到你项目文件下的Bin目录,放这个的时候,要注意下系统是要用32位,还是64的呢?如果弄错会报这个错误”an not load 7-zip library or internal COM error! Message: DLL file does not exist

                  3、如果你不按照第二步那种做法,你想自己指定7z.dll的位置。你可以这么做

       var path = "~/App_Data/7z/7z.dll";
       SevenZipBase.SetLibraryPath(path);

               然后可能有些同学不太明白我说什么,先来这里把7z.dll下载下来再说吧。https://github.com/gdoujkzz/7zdll.git

             (三) 使用SevenZipSharp 进行压缩

                   普通压缩(不加密压缩)

                    var tmp = new SevenZipCompressor(); //7z压缩
                    tmp.ScanOnlyWritable = true; //只可写
                    //tmp.CompressFiles()这个有三个重载,这里只讲其中一个比较常用的。
                    //public void CompressFiles(string archiveName, params string[] fileFullNames)
                    //archiveName:这个是代表生成的7z文件存在哪里
                    //fileFullNames:这个参数是要压缩的文件是一个params数组,特别注意必须是完整的路径名才有效
                    tmp.CompressFiles(@"D:maxarch.7z", @"D:maxSourceCodeDataExchSevenZipSharpDemoinDebug	est.txt", @"D:maxSourceCodeDataExchSevenZipSharpDemoinDebug	est1.txt");
    
                    //tmp.CompressDirectory 压缩指定路径下面的所有文件,这个有12个重载,也只讲其中一个简单的。
                   // public void CompressDirectory( string directory, string archiveName) 
                    tmp.CompressDirectory(@"D:maxSourceCodeDataExchSevenZipSharpDemoinDebug", @"arch.7z");

                加密压缩

                 其实也是和刚刚一样,看代码。

       var tmp = new SevenZipCompressor();
       tmp.CompressFilesEncrypted(@"D:maxjiami.7z", "123456", @"D:maxSourceCodeDataExchSevenZipSharpDemoinDebug	est1.txt", @"D:maxSourceCodeDataExchSevenZipSharpDemoinDebug	est.txt")

              压缩文件要加密,我暂时看到是只有这一种方式,如果大家有其他建议或不同,欢迎交流,谢谢。

           (四) 使用SevenZipSharp 进行解压

                普通解压

        using (var tmp = new SevenZipExtractor(@"d:max
    oEncrypted.7z")) { //7z文件路径
            for (int i = 0; i < tmp.ArchiveFileData.Count; i++) {
                 tmp.ExtractFiles(@"d:max", tmp.ArchiveFileData[i].Index); //解压文件路径
              }
         }
    //同样他也是支持界面某个路径下面的7z包的
    //temp.ExtractArchive(path);

               加密文件解压

          using (var tmp = new SevenZipExtractor(@"d:maxjiami2.7z","123456")) { //7z文件路径和7z文件密码
                        for (int i = 0; i < tmp.ArchiveFileData.Count; i++) {
                            tmp.ExtractFiles(@"d:max	est", tmp.ArchiveFileData[i].Index); //解压文件路径
    
                }
          }

           (五)其他功能

              除了上面所说的一些基本功能之外, 还有下面这些功能。

             (1)SevenZipSharp支持跨平台,可以在Mono上面使用。

             (2)SevenZIpSharp还支持进行异步的压缩和解压。

             (3)还支持多卷压缩和解压

             (4)还支持...还有很多厉害的功能,都没来得及尝试

          (六) 题外话

              等过段时间有空了,要封装成一个工具类,在各个平台上使用下SevenZipSharp,以及研究下它的源码。

              希望路过的大神能提点意见,让我这个菜鸟能够更快成长。谢谢。

             

               

     

            

      

  • 相关阅读:
    Python面向对象
    Python
    05、Win7上openSSH的安装与配置
    关于C++中的类型转换
    正确地使用智能指针
    为多态基类声明多态析构函数
    透视校正插值(Perspective-Correct Interpolation)
    保持const和non-const函数代码的一致
    第二章 信息的表示和处理
    《Linux内核分析》课程总结
  • 原文地址:https://www.cnblogs.com/gdouzz/p/7090710.html
Copyright © 2011-2022 走看看