zoukankan      html  css  js  c++  java
  • 利用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();
            }

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

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

  • 相关阅读:
    算法之顺序、二分、hash查找
    基本数据结构-顺序表和链表!!!
    Deque的应用案例-回文检查
    基本数据结构-双端队列(Deque)
    队列的应用案例-烫手的山芋
    基本数据结构-队列
    基本数据结构-栈
    python中列表,字典,字符串常用操作
    flask中request请求中各种传参
    HTTP请求向服务器传参方式
  • 原文地址:https://www.cnblogs.com/mingjiatang/p/3780957.html
Copyright © 2011-2022 走看看