2017-10-13 13 views
0

ZipArchieveInputStream 스트림에서 데이터를 읽을 때 무한 루프 - 유효하지 않거나 손상된 zip 파일이 스트림을 통해 전달되는 경우.손상되거나 잘못된 zip 파일을 읽는 동안 ZipArchieveInputStream을 무한대로 반복하지 않으려면 어떻게해야합니까?

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

난 당신이 사용중인 아파치 코 몬즈 클래스 ZipArchiveInputStream의 행동을 잘 모르겠지만, 아마도 당신은 해당 자바 ZipInputStream 클래스로 전환하려고합니다. 나는 그것을 사용하고 그 getNextEntry 메소드는 null을 반환하거나 엔트리가 손상되었을 때 예외를 던진다.

+0

오, 감사합니다. Carlos! zip 파일에 존재하는 엔티티를 추출하는 데 사용하고 있습니다. 이것은'ZipInputStream'으로 달성 할 수 있습니까? – Natasha

+0

예, 동일한 기능을 갖고있는 것 같습니다. –