如何加快Java中zip文件中条目的解析速度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何加快Java中zip文件中条目的解析速度相关的知识,希望对你有一定的参考价值。
我有一个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对以下问题的答案Reading zip file efficiently in Java那是我找到代码的地方。
以上是关于如何加快Java中zip文件中条目的解析速度的主要内容,如果未能解决你的问题,请参考以下文章