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;

    }

}

你可能感兴趣的:(Stream)