private static void TryCompess(string filePath, string message)
{
long originalSize, deflateSize, gzipSize;
// Пробуем Deflate алгоритм
using (FileStream inputStream = File.OpenRead(filePath))
{
originalSize = inputStream.Length;
using (MemoryStream outputStream = new MemoryStream())
{
using (DeflateStream compressionStream = new DeflateStream(outputStream, CompressionMode.Compress, true))
{
inputStream.CopyTo(compressionStream);
}
deflateSize = outputStream.Length;
}
}
// Пробуем GZip алгоритм
using (FileStream inputStream = File.OpenRead(filePath))
{
using (MemoryStream outputStream = new MemoryStream())
{
using (GZipStream compressionStream = new GZipStream(outputStream, CompressionMode.Compress, true))
{
inputStream.CopyTo(compressionStream);
}
gzipSize = outputStream.Length;
}
}
long bestSize = Math.Min(deflateSize, gzipSize);
Console.WriteLine(message);
Console.WriteLine("Оригинальный размер: {0:N0} байтов", originalSize);
Report("Алгоритм Deflate : {0:N0} {1}. Выигрыш {2} {3} ({4:P})", originalSize, deflateSize, bestSize);
Report("Алгоритм GZip : {0:N0} {1}. Выигрыш {2} {3} ({4:P})", originalSize, gzipSize, bestSize);
Console.WriteLine();
}