3

我有一个目录结构,我需要将其写入一个 zip 文件,该文件包含一个在 50 个子目录中重复的文件。当用户下载 zip 文件时,重复的文件需要出现在每个目录中。有没有办法将文件存储在一个 zip 文件中,但在提取时将其下载到子目录中?我不能使用快捷方式。

似乎 Zip 足够聪明,可以识别出我有 50 个重复文件并自动存储一次文件……让这个文件比必要的大 50 倍是愚蠢的!

4

2 回答 2

2

在 ZIP 规范中,中央目录中的多个条目可能指向相同的本地标头偏移量。ZIP 应用程序必须预先计算它要添加的文件的 CRC,并在现有 ZIP 文件的中央目录中找到匹配的条目。针对包含大量条目的 ZIP 文件查询 CRC 查找将是一项昂贵的操作。预先计算大文件上的 CRC 也很昂贵(CRC 计算通常在压缩例程期间完成)。

我还没有听说过进行这种优化的特定 ZIP 应用程序。但是,看起来 StuffIt X 格式支持重复文件优化

StuffIt X 格式支持“重复检测”。将文件添加到存档时,StuffIt 会检测是否存在重复项(即使它们具有不同的文件名),并且无论有多少副本,都只会压缩一次重复项。展开后,StuffIt 会从该实例重新创建所有副本。根据被压缩的数据,它可以显着减少大小和压缩时间。

于 2013-08-21T04:49:17.670 回答
0

我只是想澄清一下,Suffit 解决方案仅在压缩为自己的专有格式而不是 ZIP 时删除重复文件。

于 2013-08-22T13:07:56.370 回答