gpt4 book ai didi

java - Java/Apache Commons Compress 中的 zip64 文件的 ZipFile 构造函数速度慢

转载 作者:行者123 更新时间:2023-11-30 11:39:29 31 4
gpt4 key购买 nike

我必须从包含超过 100000 个文件的 zip 文件中读取文件,并且我使用的是 Java 1.6,所以我暂时使用 Apache commons 压缩库。但是,ZipFile() 的构造函数需要大约 30 秒才能返回。 (我承认我使用的机器已经过时了,一台 C2D E6550,内存为 8GB,但如果 zip 文件少于 65535 个文件,构造函数几乎会立即返回)

现在我需要加快它的速度,因为我们的程序打开 zip 文件非常频繁,而且 ZipFile 构造函数花费的时间太长了。我有两个选择:1) 将 zip 文件分成多个卷,每个卷包含 <65535 个文件或者2) 缓存 ZipFile 对象并重用它

但是,两者都需要大量的重构/重写,所以在我继续使用任何一种解决方案之前,是否有一种方法可以加快使用不同库读取 zipfile 的速度,或者我在使用 Apache commons 压缩时做错了什么?这就是我创建 zipfile 对象的方式:

final File f =  new File(zipFileName);
if(f.exists() == false)
throw new FileNotFoundException(zipFileName);
ZipFile zip = new ZipFile(f);

关于如何解决这个问题有什么想法吗?

最佳答案

从查看 source code ,它正在打开 zip 文件并立即读取所有条目。它将此信息存储在内部散列图中,这些散列图中最初的大小不适合您的用例。所有的重新散列都可能是问题所在。但很难确定。您应该使用分析器执行它以查看时间花在了哪里。

您还可以获取 apache commons 的源代码并制作您自己的版本,该版本允许您控制初始大小以查看是否有帮助。

如果没有,您总是可以在一个单独的线程中构造这个对象,并在构造它的同时做一些其他有用的事情。

关于java - Java/Apache Commons Compress 中的 zip64 文件的 ZipFile 构造函数速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256590/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com