.NET中zip的壓縮和解壓——SharpCompress插件的使用

       最近項目中要實現一個壓縮和解壓文件的功能,因而我就在github上搜索zip,而後看到SharpCompress這個開源插件用的人數不少,可是他的文檔好久沒有更新了API中的參數都對應不上了,可是這個插件是很好用的,只要注意一下他方法裏面的參數順序和使用就OK了!html

        一、使用的時候你們能夠對照官方文檔和個人代碼對比着使用就OK了,用Nuget下載SharpCompress。如今最新的是0.10.5.2,以前的都是0.10.3.0。廢話很少說上代碼。git

        二、文件壓縮代碼github

/// <summary>
/// 將一系列文件壓縮到指定ZIP文件  todo 下載文件大小爲0,待修改!
/// </summary>
/// <param name="filePaths"></param>
private MemoryStream CompressionZIP(List<string> filePaths)
{
   var zipStream = new MemoryStream();
   using (var zipWriter = WriterFactory.Open(zipStream, ArchiveType.Zip, CompressionType.BZip2))
   {
      foreach (var filePath in filePaths)
      {
          zipWriter.Write(Path.GetFileName(filePath), filePath);
          //zipStream.Flush();
      }
    }
   return zipStream;
}

 

 

        上面封裝成了方法,返回文件流。下面的壓縮方法不同,是返回文件路徑。插件

//指定要壓縮的文件夾路徑
var zipPath = exportPath + "/" + tableName + ".zip";
using (Stream zipStream = File.OpenWrite(zipPath))
using (var zipWriter = WriterFactory.Open(zipStream, ArchiveType.Zip, CompressionType.BZip2))
{
   zipWriter.WriteAll(savePath, "*", SearchOption.AllDirectories);
}

 

        三、文件解壓縮代碼code

/// <summary>
/// 解壓縮Zip
/// </summary>
/// <param name="zipFileStream">ZIP文件流</param>
/// <param name="savePath">解壓後保存路徑</param>
private void UnZip(Stream zipFileStream, string savePath)
{
   using (var archive = ArchiveFactory.Open(zipFileStream))
   {
       foreach (var entry in archive.Entries)
       {
           if (!entry.IsDirectory)
           {
                entry.WriteToDirectory(savePath, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
           }
       }
   }
}

 

        四、參考網址htm

        官方文檔:http://sharpcompress.codeplex.com/wikipage?title=Composite%20API%20Examples&referringTitle=Documentationblog

        中文參考文檔:http://www.cnblogs.com/zhaozhan/archive/2012/05/30/2524952.htmlip

        五、給你們送福利的時間到了文檔

相關文章
相關標籤/搜索