c#里压缩文件的两种方式

c#里一般可以使用两种方式来压缩文件,第一种为使用GZipStream类,这个类是MS提供的;第二种为使用SharpZipLib库,这个类非MS官方提供,但被大家广泛使用。下面分别给出这两种压缩文件方式的简单实现代码:


1、使用CZipStream:

CZipStream位于 System.IO.Compression命名空间中,下面是我自己写的练习代码:

        private void btnCSZip_Click(object sender, EventArgs e)                 //压缩  测试压缩G:\压缩文件测试\WORK文件夹下的所有内容
        {       //压缩  G:\文件读写\setup.exe
            try
            {
                //FileStream fsIn = new FileStream(@"G:\文件读写\setup.exe", FileMode.Open, FileAccess.Read);
                FileStream fsIn = new FileStream(@"G:\文件读写\1.xls", FileMode.Open, FileAccess.Read);
                int iBfInLength=(int)(fsIn.Length);
                byte[] btBufferIn = new byte[iBfInLength];
                int iTemp = fsIn.Read(btBufferIn, 0, iBfInLength);
                if (iTemp != iBfInLength)
                { 
                    MessageBox.Show("读入文件流发生错误");
                    return;
                }
                fsIn.Close();
                FileStream fsOut=new FileStream(@"G:\文件读写\setupexe.zip", FileMode.Create, FileAccess.Write);
                GZipStream gzs = new GZipStream(fsOut, CompressionMode.Compress);
                gzs.Write(btBufferIn, 0, iBfInLength);
                gzs.Close();
                fsOut.Close();
                MessageBox.Show("文件压缩完成");
            }
            catch(Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        }

        private void btnCSUnzip_Click(object sender, EventArgs e)               //解压缩
        {//解压缩 G:\文件读写\setupexe.zip 到test.xls
            try
            {
                FileStream fsIn = new FileStream(@"G:\文件读写\setupexe.zip", FileMode.Open, FileAccess.Read);
                GZipStream gzs = new GZipStream(fsIn, CompressionMode.Decompress);                                         //这行就开始报错了
                int iLength=40960;
                byte[] btBuffer = new byte[iLength];
                int iCount = 0;
                FileStream fsOut = new FileStream(@"G:\文件读写\test.xls", FileMode.Create, FileAccess.Write);
                while ((iCount = gzs.Read(btBuffer, 0, iLength)) > 0)
                {
                    fsOut.Write(btBuffer, 0, iCount);
                }
                fsOut.Close();
                gzs.Close();
                fsIn.Close();
                MessageBox.Show("文件解压缩完成");
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        } 



你可能感兴趣的:(c#里压缩文件的两种方式)