Невозможно распаковать файл с использованием 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.