利用 SharpZipLib方便地压缩和解压缩文件
最新版本的SharpZipLib(0.84)增加了很多新的功能,其中包括增加了FastZip类,这让我们可以非常方便地把一个目录压缩成一个压缩包,经测试可以很好地支持文件中包含中文以及空格的情况。
最新版本的SharpZipLib(0.84)增加了很多新的功能,其中包括增加了FastZip类,这让我们可以非常方便地把一个目录压缩成一个压缩包,经测试可以很好地支持文件中包含中文以及空格的情况。
1
/// <summary>
2
/// Create a zip archive.
3
/// </summary>
4
/// <param name="filename">The filename.</param>
5
/// <param name="directory">The directory to zip.</param>
6
public static void PackFiles(string filename, string directory)
7
{
8
try
9
{
10
FastZip fz = new FastZip();
11
fz.CreateEmptyDirectories = true;
12
fz.CreateZip(filename, directory, true, "");
13
fz = null;
14
}
15
catch (Exception)
16
{
17
throw;
18
}
19
}
20![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
21
/// <summary>
22
/// Unpacks the files.
23
/// </summary>
24
/// <param name="file">The file.</param>
25
/// <returns>if succeed return true,otherwise false.</returns>
26
public static bool UnpackFiles(string file, string dir)
27
{
28
try
29
{
30
if (!Directory.Exists(dir))
31
Directory.CreateDirectory(dir);
32![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
ZipInputStream s = new ZipInputStream(File.OpenRead(file));
34![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
ZipEntry theEntry;
36
while ((theEntry = s.GetNextEntry()) != null)
37
{
38![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
string directoryName = Path.GetDirectoryName(theEntry.Name);
40
string fileName = Path.GetFileName(theEntry.Name);
41![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
if (directoryName != String.Empty)
43
Directory.CreateDirectory(dir + directoryName);
44![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
if (fileName != String.Empty)
46
{
47
FileStream streamWriter = File.Create(dir + theEntry.Name);
48
//FileStream streamWriter = File.Create( Path.Combine(dir,theEntry.Name) ) ;
49
int size = 2048;
50
byte[] data = new byte[2048];
51
while (true)
52
{
53
size = s.Read(data, 0, data.Length);
54
if (size > 0)
55
{
56
streamWriter.Write(data, 0, size);
57
}
58
else
59
{
60
break;
61
}
62
}
63![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
streamWriter.Close();
65
}
66
}
67
s.Close();
68
return true;
69
}
70
catch (Exception)
71
{
72
throw;
73
}
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
3
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
6
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
20
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
22
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
26
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
28
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
上面代码需要引用:
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://hardrock.cnblogs.com/Images/OutliningIndicators/None.gif)
使用方法就不介绍了。
你可以到其官方网站下载最新版本的SharpZipLib:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
或者直接使用该链接下载: