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();
            }

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

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

  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/mingjiatang/p/3780957.html
Copyright © 2011-2022 走看看