GZip压缩(通过.NET)会增加文件大小吗?

3

我使用.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

1
请注意,任何能够压缩某些输入数据的压缩方案也一定会为其他某些输入数据生成更大的文件(请查看鸽巢原理)。 - gusbro
当然可以。基本上,任何压缩方案都依赖于数据冗余,因此可以通过使用特定的编码方案来减少数据量。但这并不总是正确的,例如,如果您尝试压缩包含随机数据或已经使用良好压缩器压缩的文件,则不适用。但最初的问题是关于特定压缩器实现的(而不是压缩算法本身)。良好的压缩器实现可以回退到完全存储文件而不进行压缩,从而几乎不增加其大小。我认为Mike问的不是结果文件增加了几个头字节的问题。 - Nick Martyshchenko

0
另一个可能的原因是在压缩文件时包含了.git文件夹,随着使用Git进行开发,它会变得越来越大。
对我而言,排除.git解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接