내부에 임의의 수의 zip 파일을 포함 할 수있는 zip 파일이 있습니다 (재귀 적으로도). 나는 그들 모두를 반복 할 필요가있다.ZipFile 내부의 ZipFile
지금 당장 zipInputStream 및 zipFile을 매개 변수로 사용하는 함수가 있습니다. 문제는; 다른 우편 번호 안에 우편 번호가 있으면이 함수를 재귀 적으로 다시 호출합니다. 그래서 다른 zipfile 안에 zip 파일을위한 zipFile 객체를 만드는 방법을 모른다. 누군가 그것을 할 수있는 방법을 제안 할 수 있습니까? 전에 이것을 보았습니까?
스 니펫은 다음과 같습니다.
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().
그런 다음 무 조작으로'close' 메소드를 오버라이드 (override),이 중 하나를 사용하여'ZipInputStream'을 래핑하는'FilterInputStream'을 확장합니다. – erickson
주의 - 재귀 zip 파일을 만드는 것이 가능합니다 (그리고 완료되었습니다) : http://www.steike.com/code/useless/zip-file-quine/ –
예, 조심합니다 .. 많이 고마워요. – vpram86