如何在读取损坏或无效的zip文件时避免将ZipArchieveInputStream循环到无穷大?

时间:2017-10-13 13:03:11

标签: java zip inputstream

从流中读取数据时

ZipArchieveInputStream循环到无穷大 - 当无效或损坏的zip文件通过流传递时。

    ZipArchiveInputStream stream = new ZipArchiveInputStream(file, charset, true);

        while((entry = stream.getNextZipEntry())!=null) {
                while((read = stream.read(buf)) != -1) {
                      //This loops to infinity for invalid entry
                }
        }

1 个答案:

答案 0 :(得分:1)

我不确定您正在使用的Apache Commons类ZipArchiveInputStream的行为,但也许您应该尝试切换到等效的Java ZipInputStream课程。我已经使用它,它的getNextEntry方法返回null或在条目损坏时抛出异常。