存档数千个文件和7zip限制

Oma*_*mar 8 c# 7zip

我的应用程序要求每天运行一个任务,其中需要压缩100,000多个PDF(每个~50kb)文件.目前,我正在使用7-zip和调用7za.exe(带有7-zip的命令行工具)来压缩每个文件(文件位于许多不同的文件夹中).

这种方法有哪些局限性,如何解决?7zip存档是否有文件大小或文件数限制?

Sam*_*eff 5

文件大小的限制为16艾字节,即16000000000 GB。

文件数量没有硬性限制,但是在管理文件头的方式上有实际限制。确切的限制取决于路径长度,但是在32位系统上,您将遇到大约一百万个文件的限制。

我不确定是否有其他格式支持更多格式。常规拉链的限制要小得多。

http://en.wikipedia.org/wiki/7-Zip

7-Zip的一个显着限制是,尽管它支持最大16艾字节的文件大小,但除了执行实际压缩的内存需求之外,它还为文件分配内存具有异常高的开销。

每个文件大约需要1 KB(如果路径名很长,则需要更多),并且单独的文件列表可以增长到比实际压缩所需的内存大一个数量级。在现实世界中,这意味着32位系统在一个存档中不能压缩超过一百万个左右的文件,因为内存要求超过了2 GB的处理限制。

64位系统不受相同的进程大小限制,但仍需要数GB的RAM才能克服此限制。但是,在此类系统上创建的存档将无法在内存较少的计算机上使用。