在创建之前估计 ZipArchive 的大小

Posted

技术标签:

【中文标题】在创建之前估计 ZipArchive 的大小【英文标题】:Estimate ZipArchive size before creation 【发布时间】:2018-02-11 07:01:13 【问题描述】:

鉴于我知道输入的文件大小,有什么方法可以估计ZipArchives 的输出大小(在创建之前)?我在文档中找不到关于比率的明确定义:例如1mb 压缩到 800kb 或其他大小。

【问题讨论】:

【参考方案1】:

几乎不可能估计它,因为它取决于添加的文件的内容。如果添加的文件包含许多相同的字符,则压缩率会很高。如果有很多不同的字节,压缩率会很低。

它也可能取决于无损数据压缩。与另一种未知的二进制格式相比,某些媒体格式的压缩率可能更高(以可接受的方式)。

【讨论】:

【参考方案2】:

正如 Syscall 提到的,这真的很难估计。

如果您需要此功能,您可以使用旧数据来估算新的 zip。

例如:

您想要创建资产文件夹的备份。您可以跟踪您的创建时间并保存此结果。

之后,您知道您的第一次跑步需要(假设)1.5 分钟。然后,您可以根据要压缩的数据的增长来估计下一次运行。可能 +10% 或 +20%

希望对你有帮助

【讨论】:

有趣的解决方案,但如果不可能,那就不可能了。估计大小并不是什么大问题。

以上是关于在创建之前估计 ZipArchive 的大小的主要内容,如果未能解决你的问题,请参考以下文章

PHP:使用 ZipArchive 创建 zip 文件时出现错误 (500)

ZipArchive 创建无效的 ZIP 文件

ZipArchive创建无效的ZIP条目

ZipArchive php 获取损坏或空的 zip

我使用 PHP 的 ZipArchive 创建的 .zip 存档在 Windows 10 上已损坏/无效

检查 ZIP 存档中内容的文件大小