J'ai un fichier zip qui peut contenir un nombre illimité de fichiers zip (récursivement aussi). J'ai besoin de répéter sur chacun d'eux.ZipFile dans un ZipFile
En ce moment, j'ai une fonction qui prend zipInputStream et zipFile comme paramètres. Le problème est; si je reçois un zip dans un autre zip, j'appelle cette fonction de manière récursive à nouveau. Donc, je ne sais pas comment créer un objet zipFile pour les fichiers zip dans un autre fichier zip. Quelqu'un peut-il suggérer un moyen de le faire? Avez-vous rencontré cela avant.
L'extrait ressemblera à ceci.
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
}
}
EDIT: J'ai besoin cet objet fichier zip parce que. Si je rencontre un fichier XML, j'ai besoin de créer un objet Document. Donc, si je passe la méthode normale zipInputStream pour parse()
dans DocumentBuilder
, il ferme le flux et je ne suis pas en mesure de l'utiliser à nouveau. Donc, j'ai utilisé (ZipFile object).getInputStream(currentEntryForXML)
à l'intérieur DocumentBuilder parse().
étendons '' FilterInputStream' pour remplacer la méthode close' comme no-op, et envelopper la 'ZipInputStream' avec un d'eux. – erickson
Méfiez-vous - il est possible (et a été fait) de créer un zipfile récursif: http://www.steike.com/code/useless/zip-file-quine/ –
ouais, je vais faire attention .. merci beaucoup – vpram86