標籤:系統 添加 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進行檔案壓縮實現方法