例如,我有一些文件夹包含我要压缩的文件,但我想在创建之前估计存档的大小。如果需要算法,可以使用预定义大小订单的临时文件小于文件夹大小。
有人可以推荐这样的算法或现有的压缩程序吗?
答案 0 :(得分:6)
你可以做的一种方法是读取文件的第一兆字节,在内存中压缩它,看看压缩比是多少。然后将其乘以总文件大小,您将获得总压缩大小的估计值。
该技术假定文件的其余部分类似于第一兆字节(即具有相似的熵量),这通常适用于我们使用的大多数类型的文件。但是你可以遇到第一兆字节压缩得很好而其余部分没有压缩的情况。反之亦然。
通过从整个文件中的多个点选择样本,您可以更好地了解整体压缩比。所以读取第一兆字节并压缩它。对整个文件中常规(或随机,我猜)点的样本做同样的事情。比如说,您可以读取并压缩五个1兆字节的样本,每个样本的压缩比为0.6到0.7。文件的整体压缩率很可能在该范围内。