具体可以了解下:​​http://msdn.microsoft.com/zh-cn/library/system.io.compression.deflatestream(v=vs.110).aspx​

 



/// <summary>
/// Compresses data using the <see cref="DeflateStream"/> algorithm.
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static byte[] DeflateData(byte[] data)
{
if (data == null) return null;

byte[] buffer = null;
using (MemoryStream stream = new MemoryStream())
{
using (DeflateStream inflateStream = new DeflateStream(stream, CompressionMode.Compress, true))
{
inflateStream.Write(data, 0, data.Length);
}

stream.Seek(0, SeekOrigin.Begin);

int length = Convert.ToInt32(stream.Length);
buffer = new byte[length];
stream.Read(buffer, 0, length);
}

return buffer;
}

/// <summary>
/// Inflates compressed data using the <see cref="DeflateStream"/> algorithm.
/// </summary>
/// <param name="compressedData"></param>
/// <returns></returns>
public static byte[] InflateData(byte[] compressedData)
{
if (compressedData == null) return null;

// initialize the default lenght to the compressed data length times 2
int deflen = compressedData.Length * 2;
byte[] buffer = null;

using (MemoryStream stream = new MemoryStream(compressedData))
{
using (DeflateStream inflatestream = new DeflateStream(stream, CompressionMode.Decompress))
{
using (MemoryStream uncompressedstream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(uncompressedstream))
{
int offset = 0;
while (true)
{
byte[] tempbuffer = new byte[deflen];

int bytesread = inflatestream.Read(tempbuffer, offset, deflen);

writer.Write(tempbuffer, 0, bytesread);

if (bytesread < deflen || bytesread == 0) break;
} // end while

uncompressedstream.Seek(0, SeekOrigin.Begin);
buffer = uncompressedstream.ToArray();
}
}
}
}

return buffer;
}