我有一個zip文件,其中可以包含任何數量的zip文件(也遞歸)。我需要遍歷所有這些。ZipFile內的ZipFile
現在,我有一個函數,它將zipInputStream和zipFile作爲參數。問題是;如果我在另一個zip中得到一個zip,我將再次遞歸地調用這個函數。所以我不知道如何爲另一個zip文件中的zip文件創建zip文件對象。有人可以提出一種方法來做到這一點?你以前遇到過嗎?
該片段將如下所示。
private void checkZIP(ZipInputStream zInpStream, ZipFile zf) {
try {
ZipEntry zipEntry = zInpStream.getNextEntry();
while (zipEntry != null) {
String entryName = zipEntry.getName();
if(entryName.endsWith(".zip"))
checkZIP(new ZipInputStream(zf.getInputStream(zipEntry)),<NEW ZIPFILE OBJECT FOR THIS ENTRY>);
//other files parsing apart from zip.
zInpStream.closeEntry();
zipEntry = zInpStream.getNextEntry();
}
zInpStream.close();
} catch(Exception ioe) {
//catching specific exceptions here. But did not want to put al
}
}
編輯:我需要因爲zip文件的對象。如果我遇到一個XML文件,我需要創建一個Document對象。因此,如果我通過DocumentBuilder
中parse()
方法的普通zipInputStream,它會關閉流,我無法再使用它。所以我用(ZipFile object).getInputStream(currentEntryForXML)
裏面的DocumentBuilder parse().
然後延伸'FilterInputStream'重寫'close'方法作爲無操作,並與這些中的一個包裹'ZipInputStream'。 – erickson 2009-10-01 06:11:51
請注意 - 有可能(並且已經完成)創建一個遞歸zipfile:http://www.steike.com/code/useless/zip-file-quine/ – 2009-10-01 06:16:11
是的,我會小心的..非常感謝 – vpram86 2009-10-01 06:18:24