我正在尝试使用文件选择器(只允许选择拉链)给我那个文件然后我将在zip中的每个单独的文件上执行另一个方法。但是,我正在努力使用编译器,因为它是预期的通用文件而不是zipFiles。我正在尝试使用此示例:the marked answer on this post
File zipFile = zfc.getSelectedFile();
ZipInputStream zis;
try {
zis = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry ze;
ze = zis.getNextEntry();
while (ze != null) {
InputStream stream = ((ZipFile) zipFile)
.getInputStream(ze);
//method here that will operate on stream
ze = zis.getNextEntry();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
基本上如何从java中的zip读取文件或如何将zipEntry更改为文件。
答案 0 :(得分:1)
java.io.File
表示某些连接的存储设备上物理存在(或不存在)的文件的名称。
另一方面,ZipEntry
只是一些元数据,可帮助您访问.zip文件中特定条目的内容。
回答你的第一个问题:如果你必须有一个java.io.File
实例,那么最快的方法是将整个zip文件(或你想要的部分)提取到磁盘上,然后使用File from then on 。
但是,很可能您想要做的事情不需要使用文件,而是可以使用InputStream
。在这种情况下,您可以只提供您在那里的stream
实例。这将提供更好的性能,并避免使用文件系统(创建文件,使用它们,确保清理等)。
答案 1 :(得分:1)
您需要创建一个ZipFile对象来迭代其条目。 尝试:
ZipFile zipFile = new ZipFile(zfc.getSelectedFile());
...然后继续您链接的示例。