C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法
本文所述為一個(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--; } } //沒(méi)有有文件下面的壓縮不執(zhí)行 if (ZipParameter.ZIPFileList.Count == 0) { return " file not find"; } //沒(méi)有目錄進(jìn)行創(chuàng)建 if (!Directory.Exists(ZipParameter.ZIPDirectoryName)) { Directory.CreateDirectory(ZipParameter.ZIPDirectoryName); } // 解決文檔名稱亂碼問(wèn)題,出現(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#語(yǔ)言使用Unity粒子系統(tǒng)制作手雷爆炸
這篇文章主要為大家介紹了Unity的粒子系統(tǒng)由粒子發(fā)射器、粒子動(dòng)畫器、粒子渲染器組成,通過(guò)使用一或兩個(gè)紋理多次繪制,創(chuàng)造一個(gè)混沌的效果,通過(guò)復(fù)習(xí)粒子系統(tǒng)做一個(gè)手雷和實(shí)彈投擲現(xiàn)場(chǎng)2022-04-04C#使用Win2D在UWP程序中實(shí)現(xiàn)2D繪圖
這篇文章介紹了C#使用Win2D在UWP程序中實(shí)現(xiàn)2D繪圖的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06c# 給button添加不規(guī)則的圖片以及用pictureBox替代button響應(yīng)點(diǎn)擊事件的方法
這篇文章介紹了c# 給button添加不規(guī)則的圖片以及用pictureBox替代button響應(yīng)點(diǎn)擊事件的方法,有需要的朋友可以參考一下2013-09-09C#如何正確實(shí)現(xiàn)一個(gè)自定義異常Exception
這篇文章主要為大家詳細(xì)介紹了C#如何正確實(shí)現(xiàn)一個(gè)自定義異常Exception,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09