壓縮包制作也是很多項目中需要用到的功能。比如有大量的文件(假設有10000個)需要上傳,1個1個的上傳似乎不太靠譜(靠,那得傳到什么時候???),這時我們可以制作一個壓縮包zip,直接傳這個文件到服務器端,然后在服務器目錄解壓,釋放里面的文件。
這里我們選用ICSharpCode.SharpZipLib這個類庫來實現我們的需求。
ICSharpCode.SharpZipLib提供了兩個壓縮算法的實現,分別是BZIP2(壓縮時間長,壓縮率高)和GZIP(壓縮效率高,壓縮率低)。
先定義一個枚舉,用于程序標示是哪個壓縮算法。
01 | /// <summary> | 
02 | /// 壓縮枚舉 | 
03 | /// </summary> | 
04 | publicenumZipEnum | 
05 | { | 
06 | //壓縮時間長,壓縮率高 | 
07 | BZIP2, | 
08 | 
09 | //壓縮效率高,壓縮率低 | 
10 | GZIP | 
11 | } | 
單個文件的壓縮:
01 | #region 制作壓縮包(單個文件壓縮) | 
02 | /// <summary> | 
03 | /// 制作壓縮包(單個文件壓縮) | 
04 | /// </summary> | 
05 | /// <param name="sourceFileName">原文件</param> | 
06 | /// <param name="zipFileName">壓縮文件</param> | 
07 | /// <param name="zipEnum">壓縮算法枚舉</param> | 
08 | /// <returns>壓縮成功標志</returns> | 
09 | publicstaticboolZipFile(stringsrcFileName,stringzipFileName, ZipEnum zipEnum) | 
10 | { | 
11 | boolflag =true; | 
12 | try | 
13 | { | 
14 | switch(zipEnum) | 
15 | { | 
16 | caseZipEnum.BZIP2: | 
17 | 
18 | FileStream inStream = File.OpenRead(srcFileName); | 
19 | FileStream outStream = File.Open(zipFileName, FileMode.Create); | 
20 | 
21 | //參數true表示壓縮完成后,inStream和outStream連接都釋放 | 
22 | BZip2.ComPRess(inStream, outStream,true, 4096); | 
23 | 
24 | inStream.Close(); | 
25 | outStream.Close(); | 
26 | 
27 | 
28 | break; | 
29 | caseZipEnum.GZIP: | 
30 | 
31 | FileStream srcFile = File.OpenRead(srcFileName); | 
32 | 
33 | GZipOutputStream zipFile =new學習交流 
熱門圖片 
猜你喜歡的新聞 
新聞熱點 2019-10-23 09:17:05 
2019-10-21 09:20:02 
2019-10-21 09:00:12 
2019-09-26 08:57:12 
2019-09-25 08:46:36 
2019-09-25 08:15:43 
疑難解答  |