public static void Compress(string sourceFilename, string destinationFilename)
{
// Low memory, fast compress.
using (var originalByteStream = new FileStream(sourceFilename, FileMode.Open))
{
if (File.Exists(destinationFilename))
File.Delete(destinationFilename);
using (var compressedByteStream = new FileStream(destinationFilename, FileMode.CreateNew))
{
compressedByteStream.Write(BitConverter.GetBytes(originalByteStream.Length), 0, 4);
// GZipStream requires using. Do not optimize the stream.
using (var compressionStream = new GZipStream(compressedByteStream, CompressionMode.Compress, true))
{
originalByteStream.CopyTo(compressionStream);
}
Debug.WriteLine("Compressed from {0:#,###0} bytes to {1:#,###0} bytes.", originalByteStream.Length, compressedByteStream.Length);
}
}
}