我的应用程序要求每天运行一项任务,其中需要压缩 100,000+ PDF(每个约 50kb)文件。目前,我正在使用 7-zip 并调用7za.exe
(带有 7-zip 的命令行工具)来压缩每个文件(文件位于许多不同的文件夹中)。
这种方法有哪些限制,如何解决?存档是否有文件大小或文件计数限制7zip
?
文件大小限制为 16 艾字节或 16000000000 GB。
文件数量没有硬性限制,但在管理文件头的方式上存在实际限制。确切的限制取决于路径长度,但在 32 位系统上,您会遇到大约一百万个文件的限制。
我不确定是否有其他格式支持更多。常规拉链的限制要小得多。
http://en.wikipedia.org/wiki/7-Zip
7-Zip 的一个显着限制是,虽然它支持高达 16 EB 的文件大小,但除了执行实际压缩的内存需求之外,它还为文件分配内存的开销异常高。
每个文件大约需要 1 KB(如果路径名很长,则需要更多),单独的文件列表可以增长到比进行实际压缩所需的内存大一个数量级。在现实世界中,这意味着 32 位系统无法在一个存档中压缩超过一百万左右的文件,因为内存要求超过了 2 GB 的进程限制。
64 位系统没有相同的进程大小限制,但仍需要数 GB 的 RAM 才能克服此限制。但是,在此类系统上创建的档案在内存较少的机器上将无法使用。