Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
2006-12-21 18:55
1276 查看
(一). 实现功能
对文件及目录的压缩及解压功能
(二). 运行图片示例
(三).代码
1. 压缩类
1
/**//// <summary>
2
/// 压缩类
3
/// </summary>
4
public class ZipClass
5
{
6
public static void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)
7
{
8
//如果文件没有找到,则报错
9
if (!System.IO.File.Exists(FileToZip))
10
{
11
throw new System.IO.FileNotFoundException("指定要压缩的文件: " + FileToZip + " 不存在!");
12
}
13
14
System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);
15
System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);
16
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
17
ZipEntry ZipEntry = new ZipEntry("ZippedFile");
18
ZipStream.PutNextEntry(ZipEntry);
19
ZipStream.SetLevel(CompressionLevel);
20
byte[] buffer = new byte[BlockSize];
21
System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);
22
ZipStream.Write(buffer, 0, size);
23
try
24
{
25
while (size < StreamToZip.Length)
26
{
27
int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
28
ZipStream.Write(buffer, 0, sizeRead);
29
size += sizeRead;
30
}
31
}
32
catch (System.Exception ex)
33
{
34
throw ex;
35
}
36
ZipStream.Finish();
37
ZipStream.Close();
38
StreamToZip.Close();
39
}
40
41
/**//// <summary>
42
/// 压缩目录
43
/// </summary>
44
/// <param name="args">数组(数组[0]: 要压缩的目录; 数组[1]: 压缩的文件名)</param>
45
public static void ZipFileDictory(string[] args)
46
{
47
string[] filenames = Directory.GetFiles(args[0]);
48
49
Crc32 crc = new Crc32();
50
ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
51
s.SetLevel(6);
52
foreach (string file in filenames)
53
{
54
//打开压缩文件
55
FileStream fs = File.OpenRead(file);
56
57
byte[] buffer = new byte[fs.Length];
58
fs.Read(buffer, 0, buffer.Length);
59
ZipEntry entry = new ZipEntry(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
/// <param name="FileToZip">要进行压缩的文件名</param>
85
/// <param name="ZipedFile">压缩后生成的压缩文件名</param>
86
public static void ZipFile(string FileToZip, string ZipedFile)
87
{
88
//如果文件没有找到,则报错
89
if (!File.Exists(FileToZip))
90
{
91
throw new System.IO.FileNotFoundException("指定要压缩的文件: " + FileToZip + " 不存在!");
92
}
93
FileStream fs = File.OpenRead(FileToZip);
94
byte[] buffer = new byte[fs.Length];
95
fs.Read(buffer, 0, buffer.Length);
96
fs.Close();
97
98
FileStream ZipFile = File.Create(ZipedFile);
99
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
100
ZipEntry ZipEntry = new ZipEntry("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
/// <param name="args">待解压的文件</param>
119
/// <param name="args">指定解压目标目录</param>
120
public static void UnZip(string[] args)
121
{
122
ZipInputStream s = new ZipInputStream(File.OpenRead(@args[0].Trim()));
123
ZipEntry theEntry;
124
string directoryName = 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
string fileName = Path.GetFileName(theEntry.Name);
134
135
if (fileName != String.Empty)
136
{
137
FileStream streamWriter = File.Create(@args[1].Trim() + fileName);
138
139
int size = 2048;
140
byte[] data = new byte[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. 前台页面代码
1
<body>
2
<form id="form1" runat="server">
3
<div>
4
<asp:Label ID="Label1" runat="server" BackColor="#C0C0FF" Font-Size="XX-Large"
5
Height="44px" Text="压缩文件/文件夹示例" Width="366px"></asp:Label>
6
<asp:Panel ID="Panel1" runat="server" Height="1px" Width="369px" BackColor="#FFFFC0">
7
<table width="100%" height="100%">
8
<tr>
9
<td style="width: 3px" valign="top">
10
<asp:Label ID="lbDisplay" runat="server" Text="压缩目录(from/to):" Width="153px"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
11
<br />
12
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
13
<br />
14
<asp:Button ID="btZipDictory" runat="server" OnClick="btZipDictory_Click" Text="压缩目录" /><br />
15
</td>
16
<td style="width: 4px" valign="middle">
17
<asp:Label ID="Label2" runat="server" Text="解压目录(from/to):" Width="154px"></asp:Label>
18
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
19
<br />
20
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
21
<br />
22
<asp:Button ID="btUnZipDictory" runat="server" Text="解压目录" OnClick="btUnZipDictory_Click" /><br />
23
</td>
24
</tr>
25
<tr>
26
<td style="width: 3px; height: 150px" valign="top">
27
<asp:Label ID="Label3" runat="server" Text="压缩文件(from/to):" Width="153px"></asp:Label>
28
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
29
<br />
30
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
31
<br />
32
<asp:Button ID="btZipFile" runat="server" Text="压缩文件" OnClick="btZipFile_Click" /><br />
33
</td>
34
<td style="width: 4px; height: 150px" valign="top">
35
<asp:Label ID="Label4" runat="server" Text="解压文件(from/to):" Width="154px"></asp:Label>
36
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
37
<br />
38
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
39
<br />
40
<asp:Button ID="btUnZipFile" runat="server" Text="解压文件" OnClick="btUnZipFile_Click" /><br />
41
</td>
42
43
</tr>
44
45
</table>
46
<asp:Label ID="lbMessage" runat="server" Width="368px"></asp:Label><br />
47
<br />
48
</asp:Panel>
49
50
</div>
51
</form>
52
</body>
53
3. 后台页面代码
1
public partial class _Default : System.Web.UI.Page
2
{
3
protected void Page_Load(object sender, EventArgs e)
4
{
5
6
}
7
protected void btZipDictory_Click(object sender, EventArgs e)
8
{
9
string[] FilePathS = new string[2];
10
FilePathS[0] = TextBox1.Text.Trim(); //待压缩的文件目录
11
FilePathS[1] = TextBox2.Text.Trim(); //生成的目标文件
12
ZipClass.ZipFileDictory(FilePathS);
13
}
14
protected void btUnZipDictory_Click(object sender, EventArgs e)
15
{
16
string[] FilePathS = new string[2];
17
FilePathS[0] = TextBox3.Text.Trim(); //待解压的文件
18
FilePathS[1] = TextBox4.Text.Trim(); //解压目标存放目录
19
UnZipClass.UnZip(FilePathS);
20
}
21
protected void btZipFile_Click(object sender, EventArgs e)
22
{
23
string[] FilePathS = new string[2];
24
FilePathS[0] = TextBox5.Text.Trim(); //待压缩的文件
25
FilePathS[1] = TextBox6.Text.Trim(); //生成的压缩文件名
26
ZipClass.ZipFile(FilePathS[0], FilePathS[1]);
27
28
}
29
protected void btUnZipFile_Click(object sender, EventArgs e)
30
{
31
string[] FilePathS = new string[2];
32
FilePathS[0] = TextBox7.Text.Trim(); //待解压的文件
33
FilePathS[1] = TextBox8.Text.Trim(); //解压目标存放目录
34
UnZipClass.UnZip(FilePathS);
35
}
36
}
37
(四). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/ZIP.rar
对文件及目录的压缩及解压功能
(二). 运行图片示例
(三).代码
1. 压缩类
1
/**//// <summary>
2
/// 压缩类
3
/// </summary>
4
public class ZipClass
5
{
6
public static void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)
7
{
8
//如果文件没有找到,则报错
9
if (!System.IO.File.Exists(FileToZip))
10
{
11
throw new System.IO.FileNotFoundException("指定要压缩的文件: " + FileToZip + " 不存在!");
12
}
13
14
System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);
15
System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);
16
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
17
ZipEntry ZipEntry = new ZipEntry("ZippedFile");
18
ZipStream.PutNextEntry(ZipEntry);
19
ZipStream.SetLevel(CompressionLevel);
20
byte[] buffer = new byte[BlockSize];
21
System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);
22
ZipStream.Write(buffer, 0, size);
23
try
24
{
25
while (size < StreamToZip.Length)
26
{
27
int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
28
ZipStream.Write(buffer, 0, sizeRead);
29
size += sizeRead;
30
}
31
}
32
catch (System.Exception ex)
33
{
34
throw ex;
35
}
36
ZipStream.Finish();
37
ZipStream.Close();
38
StreamToZip.Close();
39
}
40
41
/**//// <summary>
42
/// 压缩目录
43
/// </summary>
44
/// <param name="args">数组(数组[0]: 要压缩的目录; 数组[1]: 压缩的文件名)</param>
45
public static void ZipFileDictory(string[] args)
46
{
47
string[] filenames = Directory.GetFiles(args[0]);
48
49
Crc32 crc = new Crc32();
50
ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
51
s.SetLevel(6);
52
foreach (string file in filenames)
53
{
54
//打开压缩文件
55
FileStream fs = File.OpenRead(file);
56
57
byte[] buffer = new byte[fs.Length];
58
fs.Read(buffer, 0, buffer.Length);
59
ZipEntry entry = new ZipEntry(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
/// <param name="FileToZip">要进行压缩的文件名</param>
85
/// <param name="ZipedFile">压缩后生成的压缩文件名</param>
86
public static void ZipFile(string FileToZip, string ZipedFile)
87
{
88
//如果文件没有找到,则报错
89
if (!File.Exists(FileToZip))
90
{
91
throw new System.IO.FileNotFoundException("指定要压缩的文件: " + FileToZip + " 不存在!");
92
}
93
FileStream fs = File.OpenRead(FileToZip);
94
byte[] buffer = new byte[fs.Length];
95
fs.Read(buffer, 0, buffer.Length);
96
fs.Close();
97
98
FileStream ZipFile = File.Create(ZipedFile);
99
ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
100
ZipEntry ZipEntry = new ZipEntry("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
/// <param name="args">待解压的文件</param>
119
/// <param name="args">指定解压目标目录</param>
120
public static void UnZip(string[] args)
121
{
122
ZipInputStream s = new ZipInputStream(File.OpenRead(@args[0].Trim()));
123
ZipEntry theEntry;
124
string directoryName = 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
string fileName = Path.GetFileName(theEntry.Name);
134
135
if (fileName != String.Empty)
136
{
137
FileStream streamWriter = File.Create(@args[1].Trim() + fileName);
138
139
int size = 2048;
140
byte[] data = new byte[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. 前台页面代码
1
<body>
2
<form id="form1" runat="server">
3
<div>
4
<asp:Label ID="Label1" runat="server" BackColor="#C0C0FF" Font-Size="XX-Large"
5
Height="44px" Text="压缩文件/文件夹示例" Width="366px"></asp:Label>
6
<asp:Panel ID="Panel1" runat="server" Height="1px" Width="369px" BackColor="#FFFFC0">
7
<table width="100%" height="100%">
8
<tr>
9
<td style="width: 3px" valign="top">
10
<asp:Label ID="lbDisplay" runat="server" Text="压缩目录(from/to):" Width="153px"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
11
<br />
12
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
13
<br />
14
<asp:Button ID="btZipDictory" runat="server" OnClick="btZipDictory_Click" Text="压缩目录" /><br />
15
</td>
16
<td style="width: 4px" valign="middle">
17
<asp:Label ID="Label2" runat="server" Text="解压目录(from/to):" Width="154px"></asp:Label>
18
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
19
<br />
20
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
21
<br />
22
<asp:Button ID="btUnZipDictory" runat="server" Text="解压目录" OnClick="btUnZipDictory_Click" /><br />
23
</td>
24
</tr>
25
<tr>
26
<td style="width: 3px; height: 150px" valign="top">
27
<asp:Label ID="Label3" runat="server" Text="压缩文件(from/to):" Width="153px"></asp:Label>
28
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
29
<br />
30
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
31
<br />
32
<asp:Button ID="btZipFile" runat="server" Text="压缩文件" OnClick="btZipFile_Click" /><br />
33
</td>
34
<td style="width: 4px; height: 150px" valign="top">
35
<asp:Label ID="Label4" runat="server" Text="解压文件(from/to):" Width="154px"></asp:Label>
36
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
37
<br />
38
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
39
<br />
40
<asp:Button ID="btUnZipFile" runat="server" Text="解压文件" OnClick="btUnZipFile_Click" /><br />
41
</td>
42
43
</tr>
44
45
</table>
46
<asp:Label ID="lbMessage" runat="server" Width="368px"></asp:Label><br />
47
<br />
48
</asp:Panel>
49
50
</div>
51
</form>
52
</body>
53
3. 后台页面代码
1
public partial class _Default : System.Web.UI.Page
2
{
3
protected void Page_Load(object sender, EventArgs e)
4
{
5
6
}
7
protected void btZipDictory_Click(object sender, EventArgs e)
8
{
9
string[] FilePathS = new string[2];
10
FilePathS[0] = TextBox1.Text.Trim(); //待压缩的文件目录
11
FilePathS[1] = TextBox2.Text.Trim(); //生成的目标文件
12
ZipClass.ZipFileDictory(FilePathS);
13
}
14
protected void btUnZipDictory_Click(object sender, EventArgs e)
15
{
16
string[] FilePathS = new string[2];
17
FilePathS[0] = TextBox3.Text.Trim(); //待解压的文件
18
FilePathS[1] = TextBox4.Text.Trim(); //解压目标存放目录
19
UnZipClass.UnZip(FilePathS);
20
}
21
protected void btZipFile_Click(object sender, EventArgs e)
22
{
23
string[] FilePathS = new string[2];
24
FilePathS[0] = TextBox5.Text.Trim(); //待压缩的文件
25
FilePathS[1] = TextBox6.Text.Trim(); //生成的压缩文件名
26
ZipClass.ZipFile(FilePathS[0], FilePathS[1]);
27
28
}
29
protected void btUnZipFile_Click(object sender, EventArgs e)
30
{
31
string[] FilePathS = new string[2];
32
FilePathS[0] = TextBox7.Text.Trim(); //待解压的文件
33
FilePathS[1] = TextBox8.Text.Trim(); //解压目标存放目录
34
UnZipClass.UnZip(FilePathS);
35
}
36
}
37
(四). 示例代码下载
http://www.cnblogs.com/Files/ChengKing/ZIP.rar
相关文章推荐
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- [导入]Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- 转载:Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码)
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载续][重点推荐控件]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]