2010-11-18 18 views
5

我正在處理數字文檔和數字簽名,我偶然發現了一個問題。JAVA ZipFile條目()方法不會看到目錄

輸入:documentX.adoc - 帶有文件和文件夾的zip文件。

我需要獲取輸入文件中的所有內容 - 目錄和文件的列表。

我該怎麼做:

ZipFile adocFile = new ZipFile(documentXFileName); 
ArrayList <String> adocFiles = new ArrayList<String>(); 
Enumeration <? extends ZipEntry> entries; 
entries = adocFile.entries(); 
for (entries = adocFile.entries(); entries.hasMoreElements();) 
{ 
    adocFiles.add(entries.nextElement().getName()); 
} 

我試圖創建的ArrayList <的ZipEntry>並添加ZipEntries不是名稱的 - 仍然一無所獲。也許還有其他的方式?奇怪的是,那ZipEntry的有.isDirectory()方法...

感謝您的幫助, 馬丁

+0

您是否檢查過zip文件以確保其中創建了目錄? – Powerlord 2010-11-18 14:53:46

+0

你的代碼對我來說很合適。也許在一些外部壓縮工具中打開壓縮文件(基於給定的文件名),然後仔細檢查文件是否包含條目?如果可行,這可能是一個Java實現不支持的格式的問題,但我真的不知道... – 2010-11-18 14:55:45

+0

是的,目錄在那裏。我可以瀏覽zip文件(使用遠程管理器),我可以看到所有的dirs,也可以將其解壓縮以查看dirs。 – Brutus 2010-12-02 14:02:36

回答

8

documentation

目錄項被定義爲一個名字以'/'結尾。

沒有必要將目錄存儲在ZIP文件中 - 它們是可選條目。可以存儲具有路徑foo/bar.txt的字節序列,而不需要稱爲foo的條目。 Zip工具可能會提供這樣的錯覺,即這些東西存在於檔案中,即使它們不存在。