(一). 实现功能
对文件及目录的压缩及解压功能
(二). 运行图片示例

(三).代码
1. 压缩类
1
/**/
///<summary>
2
///压缩类
3
///</summary>
4
public
class
ZipClass
5
{
6
publicstaticvoidZipFile(stringFileToZip,stringZipedFile,intCompressionLevel,intBlockSize)
7

{
8
//如果文件没有找到,则报错
9
if(!System.IO.File.Exists(FileToZip))
10

{
11
thrownewSystem.IO.FileNotFoundException("指定要压缩的文件:"+FileToZip+"不存在!");
12
}
13
14
System.IO.FileStreamStreamToZip=newSystem.IO.FileStream(FileToZip,System.IO.FileMode.Open,System.IO.FileAccess.Read);
15
System.IO.FileStreamZipFile=System.IO.File.Create(ZipedFile);
16
ZipOutputStreamZipStream=newZipOutputStream(ZipFile);
17
ZipEntryZipEntry=newZipEntry("ZippedFile");
18
ZipStream.PutNextEntry(ZipEntry);
19
ZipStream.SetLevel(CompressionLevel);
20
byte[]buffer=newbyte[BlockSize];
21
System.Int32size=StreamToZip.Read(buffer,0,buffer.Length);
22
ZipStream.Write(buffer,0,size);
23
try
24

{
25
while(size<StreamToZip.Length)
26

{
27
intsizeRead=StreamToZip.Read(buffer,0,buffer.Length);
28
ZipStream.Write(buffer,0,sizeRead);
29
size+=sizeRead;
30
}
31
}
32
catch(System.Exceptionex)
33

{
34
throwex;
35
}
36
ZipStream.Finish();
37
ZipStream.Close();
38
StreamToZip.Close();
39
}
40
41
/**////<summary>
42
///压缩目录
43
///</summary>
44
///<paramname="args">数组(数组[0]:要压缩的目录;数组[1]:压缩的文件名)</param>
45
publicstaticvoidZipFileDictory(string[]args)
46

{
47
string[]filenames=Directory.GetFiles(args[0]);
48
49
Crc32crc=newCrc32();
50
ZipOutputStreams=newZipOutputStream(File.Create(args[1]));
51
s.SetLevel(6);
52
foreach(stringfileinfilenames)
53

{
54
//打开压缩文件
55
FileStreamfs=File.OpenRead(file);
56
57
byte[]buffer=newbyte[fs.Length];
58
fs.Read(buffer,0,buffer.Length);
59
ZipEntryentry=newZipEntry(file);
60
61
entry.DateTime=DateTime.Now;
62
63
entry.Size=fs.Length;
64
fs.Close();
65
66
crc.Reset();
67
crc.Update(buffer);
68
69
entry.Crc=crc.Value;
70
71
s.PutNextEntry(entry);
72
73
s.Write(buffer,0,buffer.Length);
74
75
}
76
77
s.Finish();
78
s.Close();
79
}
80
81
/**////<summary>
82
///压缩文件
83
///</summary>
84
///<paramname="FileToZip">要进行压缩的文件名</param>
85
///<paramname="ZipedFile">压缩后生成的压缩文件名</param>
86
publicstaticvoidZipFile(stringFileToZip,stringZipedFile)
87

{
88
//如果文件没有找到,则报错
89
if(!File.Exists(FileToZip))
90

{
91
thrownewSystem.IO.FileNotFoundException("指定要压缩的文件:"+FileToZip+"不存在!");
92
}
93
FileStreamfs=File.OpenRead(FileToZip);
94
byte[]buffer=newbyte[fs.Length];
95
fs.Read(buffer,0,buffer.Length);
96
fs.Close();
97
98
FileStreamZipFile=File.Create(ZipedFile);
99
ZipOutputStreamZipStream=newZipOutputStream(ZipFile);
100
ZipEntryZipEntry=newZipEntry("ZippedFile");
101
ZipStream.PutNextEntry(ZipEntry);
102
ZipStream.SetLevel(6);
103
104
ZipStream.Write(buffer,0,buffer.Length);
105
ZipStream.Finish();
106
ZipStream.Close();
107
}
108
}
109
110
/**/
///<summary>
111
///解压类
112
///</summary>
113
public
class
UnZipClass
114
{
115
/**////<summary>
116
///解压功能(解压压缩文件到指定目录)
117
///</summary>
118
///<paramname="args">待解压的文件</param>
119
///<paramname="args">指定解压目标目录</param>
120
publicstaticvoidUnZip(string[]args)
121

{
122
ZipInputStreams=newZipInputStream(File.OpenRead(@args[0].Trim()));
123
ZipEntrytheEntry;
124
stringdirectoryName=Path.GetDirectoryName(@args[1].Trim());
125
126
if(!Directory.Exists(@args[1].Trim()))
127

{
128
Directory.CreateDirectory(directoryName);
129
}
130
while((theEntry=s.GetNextEntry())!=null)
131

{
132
;
133
stringfileName=Path.GetFileName(theEntry.Name);
134
135
if(fileName!=String.Empty)
136

{
137
FileStreamstreamWriter=File.Create(@args[1].Trim()+fileName);
138
139
intsize=2048;
140
byte[]data=newbyte[2048];
141
while(true)
142

{
143
size=s.Read(data,0,data.Length);
144
if(size>0)
145

{
146
streamWriter.Write(data,0,size);
147
}
148
else
149

{
150
break;
151
}
152
}
153
154
streamWriter.Close();
155
}
156
}
157
s.Close();
158
}
159


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

74

75

76

77

78

79

80

81


82

83

84

85

86

87



88

89

90



91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110


111

112

113

114



115


116

117

118

119

120

121



122

123

124

125

126

127



128

129

130

131



132

133

134

135

136



137

138

139

140

141

142



143

144

145



146

147

148

149



150

151

152

153

154

155

156

157

158

159

2. 前台页面代码
1
<
body
>
2
<
formid
=
"
form1
"
runat
=
"
server
"
>
3
<
div
>
4
&
nbsp;
<
asp:LabelID
=
"
Label1
"
runat
=
"
server
"
BackColor
=
"
#C0C0FF
"
Font
-
Size
=
"
XX-Large
"
5
Height
=
"
44px
"
Text
=
"
压缩文件/文件夹示例
"
Width
=
"
366px
"
></
asp:Label
>
6
<
asp:PanelID
=
"
Panel1
"
runat
=
"
server
"
Height
=
"
1px
"
Width
=
"
369px
"
BackColor
=
"
#FFFFC0
"
>
7
<

2

3

4

5

6

7
