您的位置:首页 > 编程语言 > ASP

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

2006-12-25 11:10 1266 查看
(一). 实现功能

    对文件及目录的压缩及解压功能

(二). 运行图片示例



  (三).代码

   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


[align=center][/align]
[align=left](四). 示例代码下载[/align]

     http://www.cnblogs.com/Files/ChengKing/ZIP.rar
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐