程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# ICSharpCode.SharpZipLib.dll文件壓縮和解壓功能類整理,上傳文件或下載文件很常用,

C# ICSharpCode.SharpZipLib.dll文件壓縮和解壓功能類整理,上傳文件或下載文件很常用,

編輯:C#入門知識

C# ICSharpCode.SharpZipLib.dll文件壓縮和解壓功能類整理,上傳文件或下載文件很常用,


工作中我們很多時候需要進行對文件進行壓縮,比較通用的壓縮的dll就是ICSharpCode.SharpZipLib.dll,廢話不多了,網上也有很多的資料,我將其最常用的兩個函數整理了一下,提供了一個通用的類,這樣在工作中可以快速的完成壓縮和解壓縮的動作哦

官網下載地址:  http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx 

 

1. 在項目中添加對ICSharpCode.SharpZipLib.dll的引用;

 

2. 在需要使用到ICSharpCode.SharpZipLib中定義的類的編碼界面中將其導入(Imports)

 

 1 using ICSharpCode.SharpZipLib.Zip;
 2 using System;
 3 using System.IO;
 4 
 5 namespace ZTO.WayBill.Utilities
 6 {
 7     /// <summary>
 8     /// 壓縮類
 9     /// http://www.cnblogs.com/kissdodog/p/3525295.html 
10 
11     /// </summary>
12     public class ZipHelper
13     {
14         /// <summary>
15         /// 壓縮文件夾
16         /// </summary>
17         /// <param name="source">源目錄</param>
18         /// <param name="s">ZipOutputStream對象</param>
19         public static void Compress(string source, ZipOutputStream s)
20         {
21             string[] filenames = Directory.GetFileSystemEntries(source);
22             foreach (string file in filenames)
23             {
24                 if (Directory.Exists(file))
25                 {
26                     // 遞歸壓縮子文件夾
27                     Compress(file, s);
28                 }
29                 else
30                 {
31                     using (FileStream fs = File.OpenRead(file))
32                     {
33                         byte[] buffer = new byte[4 * 1024];
34                         // 此處去掉盤符,如D:\123\1.txt 去掉D:
35                         ZipEntry entry = new ZipEntry(file.Replace(Path.GetPathRoot(file), ""));
36                         entry.DateTime = DateTime.Now;
37                         s.PutNextEntry(entry);
38                         int sourceBytes;
39                         do
40                         {
41                             sourceBytes = fs.Read(buffer, 0, buffer.Length);
42                             s.Write(buffer, 0, sourceBytes);
43                         } while (sourceBytes > 0);
44                     }
45                 }
46             }
47         }
48 
49         /// <summary>
50         /// 解壓縮
51         /// </summary>
52         /// <param name="sourceFile">壓縮包完整路徑地址</param>
53         /// <param name="targetPath">解壓路徑是哪裡</param>
54         /// <returns></returns>
55         public static bool Decompress(string sourceFile, string targetPath)
56         {
57             if (!File.Exists(sourceFile))
58             {
59                 throw new FileNotFoundException(string.Format("未能找到文件 '{0}' ", sourceFile));
60             }
61             if (!Directory.Exists(targetPath))
62             {
63                 Directory.CreateDirectory(targetPath);
64             }
65             using (var s = new ZipInputStream(File.OpenRead(sourceFile)))
66             {
67                 ZipEntry theEntry;
68                 while ((theEntry = s.GetNextEntry()) != null)
69                 {
70                     if (theEntry.IsDirectory)
71                     {
72                         continue;
73                     }
74                     string directorName = Path.Combine(targetPath, Path.GetDirectoryName(theEntry.Name));
75                     string fileName = Path.Combine(directorName, Path.GetFileName(theEntry.Name));
76                     if (!Directory.Exists(directorName))
77                     {
78                         Directory.CreateDirectory(directorName);
79                     }
80                     if (!String.IsNullOrEmpty(fileName))
81                     {
82                         using (FileStream streamWriter = File.Create(fileName))
83                         {
84                             int size = 4096;
85                             byte[] data = new byte[size];
86                             while (size > 0)
87                             {
88                                 streamWriter.Write(data, 0, size);
89                                 size = s.Read(data, 0, data.Length);
90                             }
91                         }
92                     }
93                 }
94             }
95             return true;
96         }
97     }
98 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved