Microsoft make things complicated part 2

继续研究压缩文件,我又崩溃了。

压缩文件以16个簇为单位进行压缩,按压缩后的数据的尺寸分配磁盘空间,然后配上相应的稀疏流,形成完整的单元描述。比如,某16簇数据压缩之后只占用7个簇,系统从卷的210H簇起分配了7个簇,那么其描述如下:
21 07 10 02 01 09

因为不同的数据压缩率不同,对于某些类型的数据,可能压缩之后的尺寸反而大于压缩前,因此,对于此类数据,直接写入磁盘反而提高效率。所以MS规定,如果流尺寸大于等于16簇,则表示该流是非压缩流,数据读入时不需要解压。比如某210H开始的非压缩流数据描述如下:
21 10 10 02

对于尺寸刚好16个簇的流,那也罢了。

对于尺寸大于16个簇的流,欢乐的事就开始了。
比如某16H个簇的数据非压缩数据,那么该流的描述是(假设数据位置还是从210H开始):
21 16 10 02
因此,第一个单元(201H,10H)是非压缩数据,而其后的6个簇的数据因为在同一个描述内,所有也是非压缩数据,因为该单元的前6个簇是非压缩数据,所以该单元的所有数据都是非压缩数据,那么,假设第二个单元的数据存放在:
400H 5H, 450H 5H
这流描述就是:
21 16 10 02 21 05 00 04 21 05 50 04
这样,前后两个单元都是非压缩数据,这也罢了,如果第二个单元的最后一个描述超出该单元(比如450H 5H的那个流变成450H 7H,描述了再下一单元的2个簇),那么其后的单元(第三个单元)也是非压缩数据-_-b,我们可以以此类推……OMG!整个压缩文件都是非压缩数据………劳资泪奔T_T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值