Может ли сжатие GZip (через .net) увеличить размер файла? - PullRequest
3 голосов
/ 20 октября 2010

Я отслеживаю исходный размер файлов, которые сжимаю, используя класс .Net GZipStream, и кажется, что размер файла, который я думал сжимать, увеличился.Это возможно?

Вот как я делаю сжатие:

Byte[] bytes = GetFileBytes(file);

using (FileStream fileStream = new FileStream("Zipped.gz", FileMode.Create))
{
    using (GZipStream zipStream = new GZipStream(fileStream, CompressionMode.Compress))
    {
        zipStream.Write(bytes, 0, bytes.Length);
    }
}

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Да, это возможно.Это было исправлено в .NET 4 .

Алгоритмы сжатия для классов System.IO.Compression .. ::. DeflateStream и System.IO.Compression .. ::. GZipStream улучшены, так что уже сжатые данные больше не являются сжатымизавышены.Это приводит к гораздо лучшим коэффициентам сжатия.Также было снято ограничение размера в 4 гигабайта для сжатия потоков.

Проверка: GZipStream / DeflateStream увеличивает размер файла при сжатии

Также проверьте здесь SO: GZipStream и DeflateStream создают файлы большего размера

0 голосов
/ 20 марта 2019

Другая причина может заключаться в том, что вы включаете папку .git при сжатии, которая раздувается при разработке и использовании git.

Для меня, исключая .git, решена проблема.

...