java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(new BufferedInputStream(is));
java.util.zip.ZipEntry entry;
new File(outdir+ File.separator+"changelog").delete();
new File(outdir+ File.separator+"media").delete();
try {
while ((entry = zis.getNextEntry()) != null) {
File of = new File(outdir + File.separator + entry.getName());
if (entry.isDirectory()) {
of.mkdirs();
continue;
} else {
File xx = new File(of.getParent());
if (!xx.exists()) {
Stack<String> todo = new Stack<String>();
do {
todo.push(xx.getAbsolutePath());
xx = new File(xx.getParent());
} while (!xx.exists());
while (todo.size() > 0) {
xx = new File(todo.pop());
if (!xx.exists()) {
xx.mkdirs();
}
}
}
}
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(of), buffer.length);
cpio(new BufferedInputStream(zis), bos, "unzip:" + entry.getName());
bos.flush();
bos.close();
}
} catch (IllegalArgumentException e) {
// problem with chars in entry name likely
}catch(Exception e){
System.out.println(e+"Srikanth");
}
zis.close();
}
entry.isDirectory()始终返回false,因此它正在创建文件而不是目录。有什么问题?
答案 0 :(得分:0)
因此 entry.isDirectory()无法使用空目录。
来自 ZipFile 的 ZipEntry 工作正常。我认为 ZipInputStream 和 ZipEntry 之间存在差异。
答案 1 :(得分:0)
isDirectory根本无法使用带有Windows标准选项“发送到/ zip文件”压缩的文件
zip的格式与使用7zip或Winzip等工具生成的格式不同。 (很高兴有标准的存档压缩:D)