利用 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
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
33
ZipInputStream s = new ZipInputStream(File.OpenRead(file));
34
35
ZipEntry theEntry;
36
while ((theEntry = s.GetNextEntry()) != null)
37
{
38
39
string directoryName = Path.GetDirectoryName(theEntry.Name);
40
string fileName = Path.GetFileName(theEntry.Name);
41
42
if (directoryName != String.Empty)
43
Directory.CreateDirectory(dir + directoryName);
44
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
64
streamWriter.Close();
65
}
66
}
67
s.Close();
68
return true;
69
}
70
catch (Exception)
71
{
72
throw;
73
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

上面代码需要引用:


使用方法就不介绍了。
你可以到其官方网站下载最新版本的SharpZipLib:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
或者直接使用该链接下载:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现