Невозможно распаковать файл с использованием Java, но можно распаковать его с помощью 7zip

Я пытаюсь разархивировать файл, используя Java, но следующий код не входит в цикл while, поскольку 'ze' равно нулю. Однако тот же файл я могу распаковать с помощью приложения 7zip. Может кто-нибудь сообщить мне, почему это счастье?

пытаться{

        //get the zip file content
        ZipInputStream zis = 
            new ZipInputStream(new FileInputStream(zipFile));
        //get the zipped file list entry
        ZipEntry ze = zis.getNextEntry();

        while(ze!=null){

           String fileName = ze.getName();
           File newFile = new File(outputFolder + File.separator + fileName);

           System.out.println("file unzip : "+ newFile.getAbsoluteFile());

            //create all non exists folders
            //else you will hit FileNotFoundException for compressed folder
            new File(newFile.getParent()).mkdirs();

            FileOutputStream fos = new FileOutputStream(newFile);             

            int len;
            while ((len = zis.read(buffer)) > 0) {
            fos.write(buffer, 0, len);
            }

            fos.close();   
            ze = zis.getNextEntry();
        }

        zis.closeEntry();
        zis.close();

        System.out.println("Done");

    }catch(IOException ex){
       ex.printStackTrace(); 
    }

1 ответ

Javadocs здесь: https://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipInputStream.html говорит, что getNextEntry() вернет ноль, если больше нет записей. Проверьте, действительно ли ваш zip-файл содержит файлы или он пустой.

Я попробовал твой код с почтовым индексом, который содержал файлы, и он работал правильно. Я попытался сделать это с пустым zip-файлом, и для пустого файла ze был нулевым, поэтому он не вошел в цикл while.

Другие вопросы по тегам