欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用iCSharpcode進行文件壓縮實現(xiàn)方法

 更新時間:2014年08月28日 11:41:06   投稿:shichen2014  
這篇文章主要介紹了C#使用iCSharpcode進行文件壓縮實現(xiàn)方法,末尾附有完整實例,有助于大家參考借鑒,需要的朋友可以參考下

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

1.參數(shù)類

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.工作類

//****************************************************************************************
//功能:實現(xiàn)文件壓縮
//使用方法:設(shè)置參數(shù)進行壓縮
//*****************************************************************************************

using System;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
using System.Text;
namespace ZipCompress
{
  public class CompressFile
  {
    /// <summary>
    /// 壓縮文件參數(shù)
    /// </summary>
    public ZipParameter ZipParameter { get; set; }

    /// <summary>
    /// 壓縮文件返回壓縮后的信息
    /// </summary>
    /// <returns>string 返回壓縮后的提示信息</returns>
    public string CompressReturnMsg()
    {
      FileStream Zip_File;
      ZipOutputStream ZipStream;
      ZipEntry ZipEntry;
      string rtnMessage = "";//返回的信息

      try
      {
        //循環(huán)文件,如果文件不存在就不添加的壓縮里面
        for (int i = 0; i < ZipParameter.ZIPFileList.Count; i++)
        {
          if (!File.Exists(ZipParameter.ZIPFileList[i]))
          {
            ZipParameter.ZIPFileList.RemoveAt(i);
            i--;
          }

        }
        //沒有有文件下面的壓縮不執(zhí)行
        if (ZipParameter.ZIPFileList.Count == 0)
        {
          return " file not find";
        }
        //沒有目錄進行創(chuàng)建
        if (!Directory.Exists(ZipParameter.ZIPDirectoryName))
        {
          Directory.CreateDirectory(ZipParameter.ZIPDirectoryName);
        }

        // 解決文檔名稱亂碼問題,出現(xiàn)亂碼就是因為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#程序設(shè)計有所幫助。

相關(guān)文章

  • C#可空類型用法分析

    C#可空類型用法分析

    這篇文章主要介紹了C#可空類型用法,實例分析了C#可空類型的功能、定義及使用方法,需要的朋友可以參考下
    2015-05-05
  • c#語言使用Unity粒子系統(tǒng)制作手雷爆炸

    c#語言使用Unity粒子系統(tǒng)制作手雷爆炸

    這篇文章主要為大家介紹了Unity的粒子系統(tǒng)由粒子發(fā)射器、粒子動畫器、粒子渲染器組成,通過使用一或兩個紋理多次繪制,創(chuàng)造一個混沌的效果,通過復(fù)習(xí)粒子系統(tǒng)做一個手雷和實彈投擲現(xiàn)場
    2022-04-04
  • 打開一個Unity工程步驟

    打開一個Unity工程步驟

    這篇文章講述了如何打開一個Unity工程,包含詳細(xì)的圖文介紹的步驟,希望本文對你有所幫助
    2021-06-06
  • C#數(shù)組應(yīng)用分析

    C#數(shù)組應(yīng)用分析

    C#數(shù)組應(yīng)用分析...
    2007-08-08
  • C#泛型方法在lua中表示的一種設(shè)計詳解

    C#泛型方法在lua中表示的一種設(shè)計詳解

    這篇文章主要給大家介紹了關(guān)于C#泛型方法在lua中表示的一種設(shè)計的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C#使用Win2D在UWP程序中實現(xiàn)2D繪圖

    C#使用Win2D在UWP程序中實現(xiàn)2D繪圖

    這篇文章介紹了C#使用Win2D在UWP程序中實現(xiàn)2D繪圖的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#的十種語法糖介紹

    C#的十種語法糖介紹

    這篇文章介紹了C#的十種語法糖,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#的this關(guān)鍵字的2種用法

    C#的this關(guān)鍵字的2種用法

    這篇文章主要給大家分享的是C#的this關(guān)鍵字的2種用法,在使用C#的過程中,發(fā)現(xiàn)this關(guān)鍵是比較少用的,但是在下面這二個場合下是必須要使用的,不使用它是解決不了問題。下面我們就來看看文章的具體內(nèi)容吧
    2021-10-10
  • c# 給button添加不規(guī)則的圖片以及用pictureBox替代button響應(yīng)點擊事件的方法

    c# 給button添加不規(guī)則的圖片以及用pictureBox替代button響應(yīng)點擊事件的方法

    這篇文章介紹了c# 給button添加不規(guī)則的圖片以及用pictureBox替代button響應(yīng)點擊事件的方法,有需要的朋友可以參考一下
    2013-09-09
  • C#如何正確實現(xiàn)一個自定義異常Exception

    C#如何正確實現(xiàn)一個自定義異常Exception

    這篇文章主要為大家詳細(xì)介紹了C#如何正確實現(xiàn)一個自定義異常Exception,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09

最新評論