SevenZipSharp的入門教程(包含如何加密壓縮,解密壓縮)

分類:IT技術 時間:2017-06-29

          (一)為什麽選擇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:\max\arch.7z", @"D:\max\SourceCode\DataExch\SevenZipSharpDemo\bin\Debug\test.txt", @"D:\max\SourceCode\DataExch\SevenZipSharpDemo\bin\Debug\test1.txt");

                //tmp.CompressDirectory 壓縮指定路徑下面的所有文件,這個有12個重載,也只講其中一個簡單的。
               // public void CompressDirectory( string directory, string archiveName) 
                tmp.CompressDirectory(@"D:\max\SourceCode\DataExch\SevenZipSharpDemo\bin\Debug", @"arch.7z");

            加密壓縮

             其實也是和剛剛一樣,看代碼。

   var tmp = new SevenZipCompressor();
   tmp.CompressFilesEncrypted(@"D:\max\jiami.7z", "123456", @"D:\max\SourceCode\DataExch\SevenZipSharpDemo\bin\Debug\test1.txt", @"D:\max\SourceCode\DataExch\SevenZipSharpDemo\bin\Debug\test.txt")

          壓縮文件要加密,我暫時看到是只有這一種方式,如果大家有其他建議或不同,歡迎交流,謝謝。

       (四) 使用SevenZipSharp 進行解壓

            普通解壓

    using (var tmp = new SevenZipExtractor(@"d:\max\noEncrypted.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:\max\jiami2.7z","123456")) { //7z文件路徑和7z文件密碼
                    for (int i = 0; i < tmp.ArchiveFileData.Count; i++) {
                        tmp.ExtractFiles(@"d:\max\test\", tmp.ArchiveFileData[i].Index); //解壓文件路徑

            }
      }

       (五)其他功能

          除了上面所說的一些基本功能之外, 還有下面這些功能。

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

         (2)SevenZIpSharp還支持進行異步的壓縮和解壓。

         (3)還支持多卷壓縮和解壓

         (4)還支持...還有很多厲害的功能,都沒來得及嘗試

      (六) 題外話

          等過段時間有空了,要封裝成一個工具類,在各個平臺上使用下SevenZipSharp,以及研究下它的源碼。

          希望路過的大神能提點意見,讓我這個菜鳥能夠更快成長。謝謝。

         

           

 

        

  


Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad