日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ICSharpCode.SharpZipLib 开源压缩库使用示例

發布時間:2024/7/19 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ICSharpCode.SharpZipLib 开源压缩库使用示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方網站:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

插件描述:?ICSharpCode.SharpZipLib.dll 是一個完全由c#編寫的Zip, GZip, Tar and BZip2 library,可以方便地支持這幾種格式的壓縮解壓縮, SharpZipLib 的許可是經過修改的GPL,底線是允許用在不開源商業軟件中,意思就是免費使用。

一、在ThinksKing的Plugins里面找到已經解壓好的SharpZipLib,使用net-20文件夾中的ICSharpCode.SharpZipLib.dll 。添加至項目引用中。

二、操作指南:

1.1????????? 創建zip文件,并添加文件:

?

using (ZipFile zip = ZipFile.Create(@”E:\test.zip”)) {zip.BeginUpdate();zip.Add(@”E:\文件1.txt”);zip.Add(@”E:\文件2.txt”);zip.CommitUpdate(); }

1.2????????? 將文件夾壓縮為文件

(new FastZip()).CreateZip(@”E:\test.zip”, @”E:\test\”, true, “”);

最后一個參數是使用正則表達式表示的過濾文件規則。CreateZip方法有3個重載版本,其中有目錄過濾參數、文件過濾參數及用于指定是否進行子目錄遞歸的一個bool類型的參數。

1.3????????? 將文件添加到已有zip文件中

using (ZipFile zip = new ZipFile(@”E:\test.zip”)) {zip.BeginUpdate();zip.Add(@”E:\test.doc”);zip.CommitUpdate(); }

?

1.4????????? 列出zip文件中文件

using (ZipFile zip = new ZipFile(@”E:\test.zip”)) {string list = string.Empty;foreach (ZipEntry entry in zip){list += entry.Name + “\r\n”;}MessageBox.Show(list); }

1.5????????? 刪除zip文件中的一個文件

using (ZipFile zip = new ZipFile(@”E:\test.zip”)) {zip.BeginUpdate();zip.Delete(@”test.doc”);zip.Delete(@”test22.txt”);zip.CommitUpdate(); }

1.6????????? 解壓zip文件中文件到指定目錄下

(new FastZip()).ExtractZip(@”E:\test.zip”, @”E:\test\”, “”);

1.7????????? 常用類

  ZipInputStream、GZipInputStream用于解壓縮Deflate、GZip格式流,ZipOutputStream、GZipOutputStream用于壓縮Deflate、GZip格式流。

  StreamUtil類包含了幾個Stream處理輔助方法:

  1) Copy(Stream, Stream, Byte[])用于從一個Stream對象中復制數據到另一Stream對象。有多個重寫。

  2) ReadFully(Stream, Byte [])用于從Stream對象中讀取所有的byte數據。有多個重寫。

三、幫助文檔

  在SharpZipLib中有SharpZipLib_0860.chm官方幫助文檔。

參考鏈接:在路上的博文:《ICSharpCode.SharpZipLib 插件使用示例》

?


?

在處理后臺附件上載由于文件較多,需要每個文件單獨上傳關鍵是有些文件數據量比較少 也需要單獨上傳,這樣導致后臺數據流量較大而且用戶操作麻煩.

在處理這方面業務時,可以簡化:首先驗證用戶上傳文件的大小,設定不超過1M文件為限制并記錄,當用戶點擊一次操作時后臺程序把所有小數據量文件進行壓縮成一個單獨文件來上傳,這樣簡化用戶操作難度 增強用戶體驗,在獲得上載文件時同樣把這個文件進行解壓本地即可...

使用ICSharpCode.SharpZipLib-(C#)實現解壓縮文件的操作類: 完整代碼如下
A:ICSharpCode.SharpZipLib.DLL組件下載地址,如果要實現必須在項目中引用該組件DLL
下載地址:http://good.gd/203866.htm

B:完整的操作類代碼實例:

using System; using System.Collections.Generic; using System.Linq; using System.Web; //using the Compent Comspac using System.IO; using System.Text; using System.Threading; using ICSharpCode.SharpZipLib; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; namespace TestJqueryAjax{/**//// <summary>/// 使用ICSharpZipCode.Dll實現解壓縮/// Author:chenkai Time:2009年7月13日22:03:27/// Version:Beta1.0.0-(測試版)/// </summary>public class ICSharpZipCodeTest{ /**//// <summary>/// 實現壓縮功能/// </summary>/// <param name="filenameToZip">要壓縮文件(絕對文件路徑)</param>/// <param name="Zipedfiledname">壓縮(絕對文件路徑)</param>/// <param name="CompressionLevel">壓縮比</param>/// <param name="password">加密密碼</param>/// <param name="comment">壓縮文件描述</param>/// <returns>異常信息</returns>public static string MakeZipFile(string[] filenameToZip, string Zipedfiledname, int CompressionLevel, string password, string comment){try{//使用正則表達式-判斷壓縮文件路徑System.Text.RegularExpressions.Regex newRegex = new System.Text.RegularExpressions.Regex(@"^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*.*))"); if (!newRegex.Match(Zipedfiledname).Success){File.Delete(Zipedfiledname);return "壓縮文件的路徑有誤!";} //創建ZipFileOutPutStreamZipOutputStream newzipstream = new ZipOutputStream(File.Open(Zipedfiledname,FileMode.OpenOrCreate));//判斷Passwordif (password != null && password.Length > 0){newzipstream.Password = password;} if (comment != null && comment.Length > 0){newzipstream.SetComment(comment);} //設置CompressionLevelnewzipstream.SetLevel(CompressionLevel); //-查看0 - means store only to 9 - means best compression //執行壓縮foreach (string filename in filenameToZip){FileStream newstream = File.OpenRead(filename);//打開預壓縮文件//判斷路徑if (!newRegex.Match(Zipedfiledname).Success){File.Delete(Zipedfiledname);return "壓縮文件目標路徑不存在!";} byte[] setbuffer=new byte[newstream.Length];newstream.Read(setbuffer,0,setbuffer.Length);//讀入文件//新建ZipEntrityZipEntry newEntry = new ZipEntry(filename); //設置時間-長度newEntry.DateTime = DateTime.Now;newEntry.Size = newstream.Length; newstream.Close(); newzipstream.PutNextEntry(newEntry);//壓入newzipstream.Write(setbuffer,0,setbuffer.Length);}//重復壓入操作 newzipstream.Finish();newzipstream.Close();}catch (Exception e){//出現異常 File.Delete(Zipedfiledname);return e.Message.ToString();}return "";} /**//// <summary>/// 實現解壓操作/// </summary>/// <param name="zipfilename">要解壓文件Zip(物理路徑)</param>/// <param name="UnZipDir">解壓目的路徑(物理路徑)</param>/// <param name="password">解壓密碼</param>/// <returns>異常信息</returns>public static string UnMakeZipFile(string zipfilename,string UnZipDir,string password){//判斷待解壓文件路徑if (!File.Exists(zipfilename)){File.Delete(UnZipDir);return "待解壓文件路徑不存在!";}//創建ZipInputStreamZipInputStream newinStream = new ZipInputStream(File.OpenRead(zipfilename));//判斷Passwordif (password != null && password.Length > 0){newinStream.Password = password;} //執行解壓操作try{ZipEntry theEntry; //獲取Zip中單個Filewhile ((theEntry = newinStream.GetNextEntry()) != null){//判斷目的路徑if (Directory.Exists(UnZipDir)){Directory.CreateDirectory(UnZipDir);//創建目的目錄 } //獲得目的目錄信息string Driectoryname = Path.GetDirectoryName(UnZipDir);string pathname = Path.GetDirectoryName(theEntry.Name);//獲得子級目錄string filename = Path.GetFileName(theEntry.Name);//獲得子集文件名//處理文件盤符問題pathname = pathname.Replace(":", "$");//處理當前壓縮出現盤符問題Driectoryname = Driectoryname + "\\" + pathname; //創建 Directory.CreateDirectory(Driectoryname); //解壓指定子目錄if (filename != string.Empty){FileStream newstream = File.Create(Driectoryname + "\\" + pathname); int size = 2048; byte[] newbyte = new byte[size]; while (true){size = newinStream.Read(newbyte, 0, newbyte.Length); if (size > 0){//寫入數據newstream.Write(newbyte, 0, size);}else{break;}newstream.Close();}} }newinStream.Close();}catch (Exception se){ return se.Message.ToString();}finally{newinStream.Close();} return "";}} }

參考鏈接:陳凱的博文:《使用ICSharpCode.SharpZipLib-(C#)實現解壓縮文件的操作類》

轉載于:https://www.cnblogs.com/rainbow70626/p/4559691.html

總結

以上是生活随笔為你收集整理的ICSharpCode.SharpZipLib 开源压缩库使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。