public static class Zip
{
public static void Compress(string sourceFile, string compressedFile)
{
// поток для чтения исходного файла
using (var sourceStream = new FileStream(sourceFile, FileMode.OpenOrCreate))
{
// поток для записи сжатого файла
using (FileStream targetStream = File.Create(compressedFile))
{
// поток архивации
using (var compressionStream = new GZipStream(targetStream, CompressionMode.Compress))
{
sourceStream.CopyTo(compressionStream); // копируем байты из одного потока в другой
}
}
}
}
public static void Decompress(string compressedFile, string targetFile)
{
// поток для чтения из сжатого файла
using (var sourceStream = new FileStream(compressedFile, FileMode.OpenOrCreate))
{
// поток для записи восстановленного файла
using (FileStream targetStream = File.Create(targetFile))
{
// поток разархивации
using (var decompressionStream = new GZipStream(sourceStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(targetStream);
Console.WriteLine("Восстановлен файл: {0}", targetFile);
}
}
}
}
public static void CreateFromDirectory(string sourceDirectoryName, string destinationFileName)
{
ZipFile.CreateFromDirectory(sourceDirectoryName, destinationFileName);
}