Asp.net 2.0 C#实现压缩/解压功能
生活随笔
收集整理的這篇文章主要介紹了
Asp.net 2.0 C#实现压缩/解压功能
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Asp.net 2.0 C#實現(xiàn)壓縮/解壓功能 (示例代碼下載)
(一). 實現(xiàn)功能 對文件及目錄的壓縮及解壓功能 (二). 運行圖片示例
??2///?壓縮類
??3///?</summary>
??4public?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">數(shù)組(數(shù)組[0]:?要壓縮的目錄;?數(shù)組[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>
113public?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????<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
?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 (四). 示例代碼下載
? (三).代碼
?? 1. 壓縮類
??1/**////?<summary>??2///?壓縮類
??3///?</summary>
??4public?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">數(shù)組(數(shù)組[0]:?要壓縮的目錄;?數(shù)組[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>
113public?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. 后臺頁面代碼
?1public?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#实现压缩/解压功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET 2.0 读取配置文件[I
- 下一篇: 二级域名用asp.net 2.0的实现方