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

(三).代码
1. 压缩类
1
/**////<summary>
2
///压缩类
3
///</summary>
4
publicclassZipClass
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
publicclassUnZipClass
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

/**////<summary>2
///压缩类3
///</summary>4
publicclassZipClass5


{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
try24


{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
publicclassUnZipClass114


{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
else149


{150
break;151
}152
}153

154
streamWriter.Close();155
}156
}157
s.Close();158
}159
2. 前台页面代码
1
<body>
2
<formid="form1"runat="server">
3
<div>
4
<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
<
<body>2
<formid="form1"runat="server">3
<div>4
<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
<
2071

被折叠的 条评论
为什么被折叠?



