private void blossomDirectory(File dir) throws IOException { // System.out.println(">> blossomDirectory() on " + dir.getPath()); String canonicalPath = dir.getCanonicalPath(); String[] listing = (filter == null ? dir.list() : dir.list(filter)); for (int i = listing.length; --i >= 0; ) { // System.out.println(">> listing: " + listing[i]); if (filter == null || filter.accept(dir, listing[i])) { String name = (canonical ? canonicalPath : dir.getPath()) + File.separator + listing[i]; File file = new File(name); // System.out.println(">> parent: " + dir.getName()); // System.out.println(">> created file: " + file.getPath()); if (file.isFile()) files.push(file); else // dir { if (!markedDirex.containsKey(file.getCanonicalPath())) direx.push(file); } } } markedDirex.put(canonicalPath, dummy); }
public File[] listFiles(FilenameFilter filter) { ArrayList<File> files = new ArrayList<File>(); try { String prefix = getCanonicalPath(); if (!prefix.endsWith(separator)) { prefix += separatorChar; } int cut = prefix.length(); int cnt = LocalStorage.length(); for (int i = 0; i < cnt; i++) { String key = LocalStorage.key(i); if (key.startsWith(prefix) && key.indexOf(separatorChar, cut) == -1) { String name = key.substring(cut); if (filter == null || filter.accept(this, name)) { files.add(new File(this, name)); } } } } catch (IOException e) { System.err.println("lisFiles() exception: " + e); } return files.toArray(new File[files.size()]); }