提取如何在Java中使用ZipFile类递归打开所有文件,包括文件夹下的文件
我正在用Java创建一个方法来打开zipfile并在zip中动态处理Excel文件。我正在使用Java中的API ZipFile,希望按照内存中的方式处理ZipFile,而不将其解压缩到文件系统中
到目前为止,我能够遍历zip文件,但在zip文件的目录下列出文件时遇到了问题。Excel文件可以放在zip文件的文件夹中。 下面是我当前的代码,在我遇到问题的部分有一条注释。 非常感谢您的帮助:)
public static void main(String[] args) {
try {
ZipFile zip = new ZipFile(new File("C:\\sample.zip"));
for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) e.nextElement();
String currentEntry = entry.getName();
if (entry.isDirectory()) {
/*I do not know how to get the files underneath the directory
so that I can process them */
InputStream is = zip.getInputStream(entry);
} else {
InputStream is = zip.getInputStream(entry);
}
}
} catch (ZipException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
# 1 楼答案
Zip条目实际上没有关于文件夹或目录的任何概念,它们都存在于Zip文件的同一个概念根中。允许将文件组织到“文件夹”中的是zip条目的名称
zip条目之所以被视为目录,是因为它实际上不包含任何压缩字节,并且被标记为压缩字节
目录条目是一个标记,使您有机会构造使用相同路径前缀的文件需要提取到的路径
这意味着,您不需要真正关心目录条目,只需预先创建以下任何文件可能需要的输出文件夹
# 2 楼答案
请看一下here和here