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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM