命名空間:
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; } }