如何加快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文件中条目的解析速度的主要内容,如果未能解决你的问题,请参考以下文章

如何加快从磁盘加载XML文档的速度?

在 Java 中如何加快大型集合的处理速度

加快访问GitHub的速度

如何在 Java 中解析大 (50 GB) XML 文件

我可以告诉 Perl 一些数据是不可变的以加快速度吗?

如何提升页面加载速度,并简述原理