我有一个文件夹,我想尽可能高效地对其进行无损压缩。
这些文件彼此非常相似,因为主要有效负载完全相同,但可变大小的页眉和页脚在文件之间可能会有很大差异。
我需要能够非常快速地访问任何文件以及非常快速地添加其他文件(不必解压缩整个文件夹只是为了添加文件以再次重新压缩)。从文件夹中删除不是很常见。
算法建议很好,但我更愿意只使用一些现有的库/程序来完成这项任务。
最佳答案
在这种情况下,由于您对文件有特定的了解,因此自定义解决方案效果最佳。只存储一次静态主负载,然后分别存储页眉和页脚。例如,假设您有 3 个文件:
1.dat
2.dat
3.dat
将它们存储在压缩文件中:
payload.dat
1.header.dat
1.footer.dat
2.header.dat
2.footer.dat
3.header.dat
3.footer.dat
就添加文件而言,Zip 和 7zip 支持向现有存档添加新文件,因此您可以使用其中任何一种,并根据需要添加新文件。就我个人而言,我会推荐 7zip,因为我发现在大多数情况下它提供了更好的压缩率,但它会因具体内容而有很大差异。
关于algorithm - 压缩文件文件夹的最有效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5072968/