2014-10-27 71 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()); 

...然後繼續您鏈接的示例。