貌似10几天都没有更新了, 因为正在苦练F#内功心法, 同时还要现学现用完成一个S/C模式的管理系统, 实在是有些心力不足.
.NET命令空间System.IO.Compression提供了基本的流压缩实现, 其中包含RFC文档中规定的Deflate和GZip两种算法.
两种算法有许多相同点:
- 不涉及专利使用权
- 采用LZ77 算法和霍夫曼编码 (压缩率基本相同)
- 无损压缩
- 重复压缩只会导致体积更大
- 不能用于压缩大于 4 GB 的文件
- 原本并不提供向 .zip 存档中添加或提取文件
也有一些区别:
- GZip包括一个检测数据损坏的循环冗余校验值
- GZip压缩后的文件可以用大多数解压缩软件打开
总的来讲, GZip略胜一筹. 下面是F#代码:
1 | #light |