(三).代码
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);134135 if (fileName != String.Empty)136 { 137 FileStream streamWriter = File.Create(@args[1].Trim() + fileName);138139 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 else149 {150 break;151 }152 }153154 streamWriter.Close();155 }156 }157 s.Close();158 }1592. 前台页面代码
1 < body > 2 < form id = " form1 " runat = " server " > 3 < div > 4 & nbsp; < 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 & nbsp; < 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 & nbsp; < 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 & nbsp; < 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 & nbsp; < 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 > 533. 后台页面代码
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]);2728 }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