algorithm - 压缩文件文件夹的最有效算法

标签 algorithm compression

我有一个文件夹,我想尽可能高效地对其进行无损压缩。

这些文件彼此非常相似,因为主要有效负载完全相同,但可变大小的页眉和页脚在文件之间可能会有很大差异。

我需要能够非常快速地访问任何文件以及非常快速地添加其他文件(不必解压缩整个文件夹只是为了添加文件以再次重新压缩)。从文件夹中删除不是很常见。

算法建议很好,但我更愿意只使用一些现有的库/程序来完成这项任务。

最佳答案

在这种情况下,由于您对文件有特定的了解,因此自定义解决方案效果最佳。只存储一次静态主负载,然后分别存储页眉和页脚。例如,假设您有 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/

相关文章:

algorithm - O(log n!) 和 O((log n)!)

java - 在内存中压缩并序列化一个大的HashMap

c - 找到不同数字组合的数量,使其总和等于总和

c - 视力有限的寻路

python - 所有 '1'组成的最长子数组的长度

c++ - 将 vector 用于背包算法时抛出错误分配

c++ - C++ 的 gzstream 库 : corrupted file created

java - 字节数组操作

apache-spark - Spark:将DataFrame编写为压缩JSON

css - 如何在httpHandler中查找请求是针对js还是css