GZipStream

命名空间:

System.IO.Compression

说明:

此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法。这种格式包括一个检测数据损坏的循环冗余校验值。GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式。这种格式可以通过不涉及专利使用权的方式轻松实现。gzip 的格式可以从 RFC 1952“GZIP file format specification 4.3(GZIP 文件格式规范 4.3)GZIP file format specification 4.3(GZIP 文件格式规范 4.3)”中获得。此类不能用于压缩大于 4 GB 的文件。构造函数:

public GZipStream(Stream stream,CompressionMode mode)
//使用指定的流和 CompressionMode 值初始化 GZipStream 类的新实例。

public GZipStream(Stream stream,CompressionMode mode,bool leaveOpen)
//使用指定的流和CompressionMode值以及一个指定是否将流保留为打开状态的值来初始化GZipStream类的新实例。

stream 要压缩或解压缩的流。
mode CompressionMode值之一,表示要采取的操作;
leaveOpen true将流保留为打开状态,否则为false。

示例:

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

/// <summary>
/// Summary description for Compress
/// </summary>
public class Compress
{
    public Compress()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    /// <summary>
    /// 压缩,返回字符串
    /// </summary>
    /// <param name="param"></param>
    /// <returns></returns>
    public static string CompressObject(string param)
    {
        string compressString = "";
        MemoryStream mstream = new MemoryStream();
        GZipStream cstream = new GZipStream(mstream, CompressionMode.Compress, true);
        StreamWriter bwriter = new StreamWriter(cstream);
        bwriter.Write(param);
        //BinaryWriter bwriter = new BinaryWriter(cstream);
        //bwriter.Write(Encoding.UTF8.GetBytes(param));
        bwriter.Close();
        cstream.Close();
        compressString = Convert.ToBase64String(mstream.ToArray());
        mstream.Close();
        return compressString;
    }

    /// <summary>
    /// 解压缩字符串
    /// </summary>
    /// <param name="param"></param>
    /// <returns></returns>
    public static string DepressObject(string param)
    {
        string commonString = "";
        byte[]  data = Convert.FromBase64String(param) ;
        MemoryStream mstream = new MemoryStream(data);
        GZipStream cstream = new GZipStream(mstream, CompressionMode.Decompress);
        StreamReader reader = new StreamReader(cstream);
        commonString = reader.ReadToEnd();
        mstream.Close();
        cstream.Close();
        reader.Close();
        return commonString;
    }
}

示例2:

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

/// <summary>
/// Summary description for Cop
/// </summary>
public class Cop
{
    public Cop()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    /// <summary>
    /// 压缩文件
    /// </summary>
    /// <param name="fileName">文件名(全路径)</param>
    /// <param name="data">需要压缩的字符串</param>
    public void CompressFile(string fileName, string data)
    {        
        FileStream fstream = new FileStream(fileName, FileMode.Create, FileAccess.Write);
        GZipStream gstream = new GZipStream(fstream, CompressionMode.Compress);
        StreamWriter swriter = new StreamWriter(gstream);
        swriter.Write(data);
        swriter.Close();
        gstream.Close();
        fstream.Close();
    }
    /// <summary>
    /// 解压缩
    /// </summary>
    /// <param name="fileName">文件名(全路径)</param>
    /// <returns></returns>
    public string DecompressFile(string fileName)
    {
        string cstring="";
        FileStream fstream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        GZipStream gstream = new GZipStream(fstream, CompressionMode.Decompress);
        StreamReader reader = new StreamReader(gstream);
        cstring=reader.ReadToEnd();
        reader.Close();
        gstream.Close();
        fstream.Close();
        return cstring;
    }
}
原文地址:https://www.cnblogs.com/AngelLee2009/p/3338733.html