添加引用 using System.IO.Compression; 代码如下: /// <summary> /// 获取数据压缩后的字节码 /// </summary> public byte[] Compress(DataSet dt) { try { // 声明MemoryStream MemoryStream ms = new MemoryStream(); // 写入DataSet中的数据到ms中 dt.WriteXml(ms, XmlWriteMode.WriteSchema); // ms转换为数组序列 byte[] bsrc = ms.ToArray(); //关闭ms并释放资源 ms.Close(); ms.Dispose(); ms = new MemoryStream(); ms.Position = 0; // 压缩数组序列中的数据 DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress); zipStream.Write(bsrc, 0, bsrc.Length); zipStream.Close(); zipStream.Dispose(); return ms.ToArray(); } catch { return null; } } /// <summary> /// 获取对象压缩后的字节码 /// </summary> public byte[] Compress(string str) { try { // ms读取传入的str并转存如数组序列中 MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms); sw.Write(str); sw.Close(); byte[] bsrc = ms.ToArray(); ms.Close(); ms.Dispose(); ms = new MemoryStream(); ms.Position = 0; // 压缩数组序列并返回压缩后的数组 DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress); zipStream.Write(bsrc, 0, bsrc.Length); zipStream.Close(); zipStream.Dispose(); return ms.ToArray(); } catch { return null; } } /// <summary> /// 获取解压缩后的数据集 /// </summary> public DataSet DeCompress(byte[] arrbts) { try { // MemoryStream ms = new MemoryStream(); ms.Write(arrbts, 0, ArrBytes.Length); ms.Position = 0; // DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress); MemoryStream UnzipStream = new MemoryStream(); byte[] sDecompressed = new byte[128]; while (true) { int bytesRead = ZipStream.Read(sDecompressed, 0, 128); if (bytesRead == 0) { break; } UnzipStream.Write(sDecompressed, 0, bytesRead); } ZipStream.Close(); ms.Close(); UnzipStream.Position = 0; DataSet ds = new DataSet(); // 读取解压后xml数据 ds.ReadXml(UnzipStream); ds.AcceptChanges(); //更新所有行的状态为初始状态 return ds; } catch { return null; } } /// <summary> /// 获取解压缩后的字符串 /// </summary> public string DeCompressString(byte[] arrbts) { try { MemoryStream ms = new MemoryStream(); ms.Write(arrbts, 0, ArrBytes.Length); ms.Position = 0; DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress); MemoryStream UnzipStream = new MemoryStream(); byte[] sDecompressed = new byte[128]; while (true) { int bytesRead = ZipStream.Read(sDecompressed, 0, 128); if (bytesRead == 0) { break; } UnzipStream.Write(sDecompressed, 0, bytesRead); } ZipStream.Close(); ms.Close(); UnzipStream.Position = 0;// 解压起始位置设置为头 StreamReader sr = new StreamReader(UnzipStream); return sr.ReadToEnd(); } catch { return ""; } }