.net 4.5中的GZipStream类可以创建更大的文件吗?



我在我的winform应用程序中使用压缩在上传之前压缩文件。以前,我们使用。net框架3.5和GZipStream类,在大多数情况下产生较大的文件。但是,在升级到。net framework 4.5之后,我对同一组文件得到了非常好的压缩结果。所以,他们似乎已经修复了。net 4.5中的压缩错误。但是我想知道是否还有一些场景,GZip压缩会产生比原始文件更大的文件。如果文件大小保持不变,那么这不是问题。或者我应该考虑使用其他一些压缩,我也尝试了Donetzip Lib。但是,.net 4.5 GzipStream给了我更好的结果。

是。事实上,如果任何有损压缩方案压缩任何数据流,则可以保证将扩展某些数据流。您可以向压缩机提供随机数据,以查看它扩展了多少。

最大膨胀是有限的一个小量。gzip头和尾通常是18个字节添加到原始deflate流(即,如果gzip头中没有文件名,额外的数据或注释),并且原始deflate流中的原始数据的扩展仅限于为每个存储块添加5个字节。存储块的大小取决于压缩器和选项。如果。NET 4.5使用带有默认选项的zlib,则块大小为16383字节。最后一个块也增加了5个字节,可能小于16383字节。

因此,例如,如果您使用默认设置使用zlib将20,000个随机字节压缩为gzip格式,则结果大小为20,028字节。压缩30个随机字节将得到53字节的输出。

相关内容

  • 没有找到相关文章

最新更新