2017-10-13 13 views
0

ZipArchieveInputStreamストリームからデータを読み込むときの無限ループ - 無効または破損した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

私はあなたが使用しているApacheのコモンズのクラスZipArchiveInputStreamの行動のかわからないけど、多分あなたは同等のJava ZipInputStreamクラスに切り替えてみてください。私はそれを使用して、そのgetNextEntryメソッドはnullを返すか、エントリが破損したときに例外をスローします。

+0

ありがとうカルロス!私はzipファイルに存在するエンティティを抽出するためにそれを使用しています。これは 'ZipInputStream'で達成可能ですか? – Natasha

+0

はい、同じ機能を持っているようです。 –

関連する問題