无法使用带有Java7和Java8的ZipInputStream提取zip64存档
我使用下面的代码从zip存档中提取文件无法使用带有Java7和Java8的ZipInputStream提取zip64存档,java,zip,compression,zipinputstream,apache-commons-compress,Java,Zip,Compression,Zipinputstream,Apache Commons Compress,我使用下面的代码从zip存档中提取文件 public static List<String> unzipFiles(File zipFile, File targetDirectory) { List<String> files = new ArrayList<String>(); BufferedOutputStream dest = null; FileInputStream fileInputStream = null;
public static List<String> unzipFiles(File zipFile, File targetDirectory) {
List<String> files = new ArrayList<String>();
BufferedOutputStream dest = null;
FileInputStream fileInputStream = null;
ZipInputStream zipInputStream = null;
try {
fileInputStream = new FileInputStream(zipFile);
zipInputStream = new ZipInputStream(new BufferedInputStream(
fileInputStream));
ZipEntry zipEntry;
int count = 0;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
log.debug("Extracting File Name :: " + zipEntry);
count++;
int length;
byte data[] = new byte[bufferGlb];
String fileName = zipEntry.getName();
File opFile = new File(targetDirectory, fileName);
FileOutputStream fileOutputStream = new FileOutputStream(opFile);
dest = new BufferedOutputStream(fileOutputStream, bufferGlb);
while ((length = zipInputStream.read(data, 0, bufferGlb)) != -1) {
dest.write(data, 0, length);
}
dest.flush();
files.add(fileName);
fileOutputStream.close();
}
log.debug("Total " + count + " Files Unziped Successfully ");
} catch (Exception e) {
log.error("Error occured in unzipping the file " + zipFile, e);
}
}
但是,我可以使用commons compress ZipArchiveInputStream从zip64中提取文件
知道为什么不能使用JavaAPI(ZipInputStream)实现同样的功能吗 很多人都面临着这个问题,但我们没有任何正确的答案。请帮助我你不在MacOS上,是吗?因为它应该可以在其他平台和更新的MacOS上安装。是的,MacOS上没有,它的Windows10。这个问题正被许多人面临,但我们没有任何正确的答案。请帮助我你不在MacOS上,是吗?因为它应该可以在其他平台和更新的MacOS安装上实现。是的,因为它的windows10不在MacOS上
java.util.zip.ZipException: invalid entry size (expected 0 but got 21504 bytes)
at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:384)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:196)