Asp.net 2.0 C#实现压缩解压功能 (示例代码下载)

    技术2022-05-11  55

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

      (三).代码

       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    }159

    2. 前台页面代码

     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 > 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]);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

     

    最新回复(0)