利用c#自带的类对文件进行压缩和解压处理

  在做网络传输文件的小例子的时候,当传输的文件比较大的时候,我们通常都是将文件经过压缩之后才进行传输,以前都是利用第三方插件来对文件进行压缩的,但是现在我发现了c#自带的类库也能够实现文件的压缩,实际上是对数据的压缩吧,为什么说是对具体的数据经行压缩了,请看下面实现压缩的代码吧。

注意在用c#自带的类库实现文件压缩和解压的时候需要添加下面的引用:

using System.IO.Compression;
using System.IO;

压缩文件的代码如下:

        /// <summary>
        ///压缩文件
        /// </summary>
        /// <param name="filePath">需要被压缩文件的路径</param>
        private void FileCompression(string filePath)
        {
            StreamReader sr = new StreamReader(filePath);
            //读取出文件中的内容来。
            string data=sr.ReadToEnd();
            //压缩文件的后缀名可以随意起。
            FileStream filedata = new FileStream("myCompression.mZP", FileMode.Create, FileAccess.Write);
            GZipStream zip = new GZipStream(filedata, CompressionMode.Compress);
            StreamWriter sw = new StreamWriter(zip);
            //将文件的内容写入到压缩的流当中
            sw.Write(data);
            zip.Close();
            sr.Close();
            filedata.Close();
            //关闭流一定要按照流的顺序来,否则会出现异常:无法访问已关闭的文件。
           // zip.Close();
           
        }    

然后实现解压的代码与上面类似

解压文件的代码如下:

        private void fileDeCompression()
        {
            //将以压缩的文件变为一个文件流
            FileStream fileCompression = File.OpenRead("myCompression.mZP");
            GZipStream gzp = new GZipStream(fileCompression, CompressionMode.Decompress);

            StreamReader sr = new StreamReader(gzp);
            //读取出解压后的数据
            string data = sr.ReadToEnd();
            MessageBox.Show(data);
            gzp.Close();
            fileCompression.Close();
            sr.Close();
        }

通过使用上面的两个方法即可实现对文件或者是数据的压缩和解压。

使用自带的类也会存在一些缺点:无法对文件夹经行压缩。

原文地址:https://www.cnblogs.com/mingjiatang/p/3780957.html