C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法
更新時(shí)間:2014年08月28日 11:41:06 投稿:shichen2014
這篇文章主要介紹了C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法,末尾附有完整實(shí)例,有助于大家參考借鑒,需要的朋友可以參考下
本文所述為一個(gè)C#使用iCSharpcode壓縮的使用類,經(jīng)測(cè)試效果不錯(cuò)。分享給大家供大家參考之用。具體方法如下:
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.工作類
//****************************************************************************************
//功能:實(shí)現(xiàn)文件壓縮
//使用方法:設(shè)置參數(shù)進(jìn)行壓縮
//*****************************************************************************************
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";
}
//沒有目錄進(jìn)行創(chuàng)建
if (!Directory.Exists(ZipParameter.ZIPDirectoryName))
{
Directory.CreateDirectory(ZipParameter.ZIPDirectoryName);
}
// 解決文檔名稱亂碼問題,出現(xiàn)亂碼就是因?yàn)镃odePage不對(duì)
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\錯(cuò)誤文件.jpg"); CompressFile cprFile = new CompressFile(); cprFile.ZipParameter = zp; string strMessage = cprFile.CompressReturnMsg();
4.文件源碼點(diǎn)此本站下載
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
淺析c#范型中的特殊關(guān)鍵字where & default
以下是對(duì)c#范型中的特殊關(guān)鍵字where和default進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-09-09
英雄聯(lián)盟輔助lol掛機(jī)不被踢的方法(lol掛機(jī)腳本)
lol掛機(jī)不會(huì)被踢,調(diào)用API設(shè)置鼠標(biāo)位置并模擬鼠標(biāo)右鍵讓人物走動(dòng)2013-12-12
c#打印預(yù)覽控件中實(shí)現(xiàn)用鼠標(biāo)移動(dòng)頁面功能代碼分享
項(xiàng)目中需要實(shí)現(xiàn)以下功能:打印預(yù)覽控件中,可以用鼠標(biāo)拖動(dòng)頁面,以查看超出顯示范圍之外的部分內(nèi)容,下面就是實(shí)現(xiàn)代碼2013-12-12
C#設(shè)計(jì)模式之裝飾器模式實(shí)例詳解
本文詳細(xì)講解了C#設(shè)計(jì)模式之裝飾器模式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10

