有没有办法在使用System.IO.Compression.GZipStream时设置压缩级别

时间:2011-06-27 15:36:48

标签: .net compression

使用.NET GZipStream压缩流时是否可以设置压缩级别?似乎Ionic Zip有一个构造函数,但我不想使用库来获得此功能。

2 个答案:

答案 0 :(得分:3)

我不会说这是不可能的,但根据我对MSDN的评论,我会说它绝对不是开箱即用的。

我认为他们的借口总结为:

  

逐字节读入数据   基础,所以不可能   执行多次传递以确定   压缩整个的最佳方法   文件或大块数据。

This posting表示内部默认为3级,并且它具有选项(再次,内部)以支持更改压缩级别,但不会公开。

答案 1 :(得分:2)

从.NET 4.5开始,CompressionLevel枚举已添加到GZipStream的几个构造函数中。

这些选项是:

CompressionLevel.Optimal = 0
CompressionLevel.Fastest = 1
CompressionLevel.NoCompression = 2

因此,您现在可以通过传递GZipStream来创建CompressionLevel,该{决定要压缩多少数据。

using (GZipStream compressionStream = new GZipStream(stream, CompressionLevel.Optimal))
{
    // ...
}

GZipStream documentationCompressionLevel documentation中提供了更多信息。