private List<IFile> listFiles(boolean includeFilesInNestedSubdirs) { Map<String, ZipEntry> entriesByName = new LinkedHashMap<String, ZipEntry>(); for (ZipEntry entry : getAllEntries()) { if (ZipDirectory.isInDir(getNameInZip(), entry, includeFilesInNestedSubdirs)) { entriesByName.put(entry.getName(), entry); } } List<IFile> files = new ArrayList<IFile>(); for (ZipEntry ze : entriesByName.values()) { NestedZipDirectory parent = includeFilesInNestedSubdirs ? buildParent(ze, entriesByName) : this; if (ze.isDirectory()) files.add(new NestedZipDirectory(archive, ze, parent, cache)); else files.add(new NestedZipFile(archive, ze, parent, cache)); } return files; }
NestedZipDirectory parent = buildParent(ze, entries); if (ze.isDirectory()) return new NestedZipDirectory(archive, ze, parent, cache); else return new NestedZipFile(archive, ze, parent, cache); } else { return null;