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