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);
 }
Пример #2
0
  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()]);
  }