使用.NET GZipStream
压缩流时是否可以设置压缩级别?似乎Ionic Zip有一个构造函数,但我不想使用库来获得此功能。
答案 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
documentation或CompressionLevel
documentation中提供了更多信息。