如何加速解析 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)。


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


慕后森
浏览 122回答 1
1回答

幕布斯6054654

根据评论,这样做的更好方法是,即使用 ZipFile 而不是 ZipInputStream&nbsp; &nbsp;final ZipFile file = new ZipFile(filePath);&nbsp; &nbsp; &nbsp; &nbsp;final Enumeration<? extends ZipEntry> entries = file.entries();&nbsp; &nbsp; &nbsp; &nbsp;while ( entries.hasMoreElements() ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;final ZipEntry zipEntry = entries.nextElement();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// code to generate the json file tree ---&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// --- end of code&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}所有学分都应该归于 Wasim Wani 对以下问题的回答在 Java 中有效地读取 zip 文件 那是我找到代码的地方。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java