2012-12-04 147 views
-1

我想解壓Java文件並將所有內容添加到數組列表中,而不是寫入磁盤。我遇到的問題是,我將某個路徑傳遞給一個zip文件,然後當它讀取zip文件並將文件添加到列表中時 - 當我處理這些文件時,它們在我的項目目錄中有奇怪的路徑,不存在。解壓縮文件 - 路徑

請有人可以幫我嗎? 公共無效processZipFile(字符串路徑){

File file = new File(path); 
    file.setReadable(true); 
    ZipFile zip; 
    ArrayList<File> files = new ArrayList<File>(); 
    try { 
     zip = new ZipFile(file); 
     Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip 
       .entries(); 
     while (entries.hasMoreElements()) { 
      ZipEntry entry = entries.nextElement(); 
      File f = new java.io.File(entry.getName()); 
      allFiles.add(f); 
     } 
    } catch (ZipException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+3

*「奇怪的路徑」*模糊的描述。 Zip中有什麼路徑?提取路徑的根源是什麼?你期望什麼類型的路徑?你得到什麼類型的路徑? –

+0

問題清楚了嗎? –

+0

注意:如果您使用Java SE 7,請考慮使用新的NIO File API來處理文件和Zip文件。 – Puce

回答

0

據我所知,你的entry.getName()不會返回,可以用來打開文件有用的東西。請記住,這只是一個zip條目而不是一個物理文件。 我建議你使用zipFile.getInputStream來存儲數組中的每個條目的inputStreams,然後從輸入流中提取你的內容,最後當它們對你無用時關閉這些流。