我有一个 Web 服务,可以动态解析 zip 文件的内部文件结构(文件名、目录等),并将结果作为 json 发送回。它工作正常,只是 zip 文件包含一些非常大的文件,即使 zip 文件中只有几个文件,也可能需要长达几十秒的时间才能得到答案。我怀疑解压缩算法必须解析整个文件才能获得不同的 zip 条目。我正在使用标准的 java zip 库。下面是一些基本代码:
ZipInputStream zis = new ZipInputStream(new FileInputStream(new File(myFilePath)));
ZipEntry zipEntry = zis.getNextEntry();
while(zipEntry != null){
// code to generate the json file tree ---
// --- end of code
zipEntry = zis.getNextEntry();
}
我没有阅读文件的内容或任何内容,只是遍历条目。事实上,我可以像上面一样空运行它,但它仍然需要很多时间(和 CPU)。
有没有办法加快这个过程?也许更好的图书馆?
谢谢!
根据评论,这样做的更好方法是,即使用 ZipFile 而不是 ZipInputStream
final ZipFile file = new ZipFile(filePath);
final Enumeration<? extends ZipEntry> entries = file.entries();
while ( entries.hasMoreElements() ) {
final ZipEntry zipEntry = entries.nextElement();
// code to generate the json file tree ---
// --- end of code
}
}
所有学分都应该归于 Wasim Wani 对以下问题的回答在 Java 中有效地读取 zip 文件那是我找到代码的地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句