.Net suporta dois formatos de compactação: GZip e Deflate. Eu tentei e não houve diferença na taxa de compressão ou velocidade. Entre eles, o GZip pode ser aberto pelo WinRAR.
É muito simples de usar, o seguinte programa compacta uma string em um arquivo:
using (DeflateStream gzip = new DeflateStream(fs, CompressionMode.Compress))
{
byte[] buf = Encoding.UTF8.GetBytes(this.txbSource.Text);
gzip.Write(buf, 0, buf.Comprimento);
gzip.Flush();
}
A descompressão requer apenas isto:
gzip = new GZipStream(new MemoryStream(buf), CompressionMode.Decompress);
usando (leitor StreamReader = novo StreamReader (gzip))
{
this.txbTarget.Text = leitor.ReadToEnd();
}
Se você estiver descompactando de um arquivo, basta alterar MemoryStream para FileStream.
Claro, você precisa adicionar: using System.IO.Compression;
http://www.cnblogs.com/fujingqiu/archive/2006/10/29/543347.html