C#使用iCSharpcode進行檔案壓縮實現方法

來源:互聯網
上載者:User

標籤:系統   添加   tran   嵌入   abi   sage   set   ddd   href   

本文所述為一個C#使用iCSharpcode壓縮的使用類,經測試效果不錯。分享給大家供大家參考之用。具體方法如下:


1.參數類

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ZipCompress{  public class ZipParameter  {    private string zip_Name = "";    private string zip_DirectoryName = "";    private List<string> zip_FileList = new List<string>();    /// <summary>    /// 壓縮後的檔案名稱    /// </summary>    public string ZIPName    {      get { return zip_Name; }      set { zip_Name = value; }    }    /// <summary>    /// 壓縮的檔案路徑    /// </summary>    public string ZIPDirectoryName    {      get { return zip_DirectoryName; }      set { zip_DirectoryName = value; }    }    /// <summary>    /// 壓縮的檔案清單    /// </summary>    public List<string> ZIPFileList    {      get { return zip_FileList; }      set { zip_FileList = value; }    }  }}


2.工作類

//****************************************************************************************//功能:實現檔案壓縮//使用方法:設定參數進行壓縮//*****************************************************************************************using System;using ICSharpCode.SharpZipLib.Zip;using System.IO;using System.Text;namespace ZipCompress{  public class CompressFile  {    /// <summary>    /// 壓縮檔參數    /// </summary>    public ZipParameter ZipParameter { get; set; }    /// <summary>    /// 壓縮檔返回壓縮後的資訊    /// </summary>    /// <returns>string 返回壓縮後的提示資訊</returns>    public string CompressReturnMsg()    {      FileStream Zip_File;      ZipOutputStream ZipStream;      ZipEntry ZipEntry;      string rtnMessage = "";//返回的資訊      try      {        //迴圈檔案,如果檔案不存在就不添加的壓縮裡面        for (int i = 0; i < ZipParameter.ZIPFileList.Count; i++)        {          if (!File.Exists(ZipParameter.ZIPFileList[i]))          {            ZipParameter.ZIPFileList.RemoveAt(i);            i--;          }        }        //沒有有檔案下面的壓縮不執行        if (ZipParameter.ZIPFileList.Count == 0)        {          return " file not find";        }        //沒有目錄進行建立        if (!Directory.Exists(ZipParameter.ZIPDirectoryName))        {          Directory.CreateDirectory(ZipParameter.ZIPDirectoryName);        }        // 解決文檔名稱亂碼問題,出現亂碼就是因為CodePage不對        Encoding gbk = Encoding.GetEncoding("gbk");        ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = gbk.CodePage;        //檔案路徑,文檔路徑與檔案名稱        string strPath = ZipParameter.ZIPDirectoryName + ZipParameter.ZIPName;        Zip_File = File.Create(strPath);        ZipStream = new ZipOutputStream(Zip_File);        foreach (string FileToZip in ZipParameter.ZIPFileList)        {          Zip_File = File.OpenRead(FileToZip);          byte[] buffer = new byte[Zip_File.Length];          Zip_File.Read(buffer, 0, buffer.Length);          Zip_File.Close();          ZipEntry = new ZipEntry(Path.GetFileName(FileToZip));          ZipStream.PutNextEntry(ZipEntry);          ZipStream.Write(buffer, 0, buffer.Length);        }        ZipStream.Finish();        ZipStream.Close();        Zip_File.Close();        rtnMessage = "success";      }      catch (Exception ex)      {        rtnMessage = "fail:" + ex.Message;      }      finally      {        GC.Collect();        GC.Collect(1);      }      return rtnMessage;    }  }}


3.使用類

ZipParameter zp = new ZipParameter();zp.ZIPDirectoryName = @"C:\Users\Public\Pictures\Sample Pictures\";zp.ZIPName = "Test.zip";zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg");zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg");zp.ZIPFileList.Add(@"C:\Users\Public\Pictures\Sample Pictures\錯誤檔案.jpg");CompressFile cprFile = new CompressFile();cprFile.ZipParameter = zp;string strMessage = cprFile.CompressReturnMsg();

4.檔案源碼點此

希望本文所述對大家的C#程式設計有所協助。

除聲明外, 跑步客文章均為原創,轉載請以連結形式標明本文地址
  C#使用iCSharpcode進行檔案壓縮實現方法

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23576.html






相關內容C#基於Regex刪除字串中數字或非數位方法asp.net擷取系統目前時間的方法詳解C#.net編程建立Access檔案和Excel檔案的方法詳解C#中DataBindings用法執行個體分析
在C#中新手易犯的典型缺陷C# 通過 inline-asm 解決嵌入x86彙編C#產生條碼圖片的簡單方法C#分屏控制項用法執行個體

C#使用iCSharpcode進行檔案壓縮實現方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.