如何加快Java中zip文件中条目的解析速度

问题描述 投票:0回答:1

我有一个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)。

有没有办法加快这个过程?可能更好的图书馆?

谢谢!

java zip
1个回答
0
投票

根据评论,更好的方法是使用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那是我找到代码的地方。

© www.soinside.com 2019 - 2024. All rights reserved.