2014-10-27 169 views
0

我试图使用文件选择器(只允许选择拉链)给我的文件,然后我会在zip中的每个单独的文件上执行另一种方法。然而,我正在努力编译器,因为它是预期的通用文件而不是zipFiles。我想用这个例子:the marked answer on this postJava将文件转换为ZipFile

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

如果我正确地理解了你......你需要提取你找到的所有zip文件,然后检查你提取的每个文件。因此,在第一个while循环中,将所有zip文件解压缩到一个临时文件夹中,然后在第二个循环中查看所有解压缩文件并执行其他操作。 – munyul 2014-10-27 14:37:14

回答

1

A java.io.File表示某个连接的存储设备上物理存在(或不存在)文件的名称。

另一方面,A ZipEntry只是一些元数据,可帮助您访问.zip文件中特定条目的内容。

要回答你的第一个问题:如果你必须有一个java.io.File实例,那么最快捷的方法是将整个zip文件(或你想要的部分)提取到磁盘上,然后使用File。

但是,很可能你想做的事情不需要使用文件,而是可以使用InputStream来代替。在这种情况下,您可以只提供它在那里的stream实例。这将提供更好的性能,并避免使用文件系统(创建文件,使用它们,确保清理等)。

0

您需要创建ZipFile对象来遍历其条目。 尝试:

ZipFile zipFile = new ZipFile(zfc.getSelectedFile()); 

...然后继续您链接的示例。