topical media & game development

talk show tell print

graphic-processing-site-examples-Topics-Advanced-Data-DirectoryList-DirectoryList.pde / pde



  
Listing files in directories and subdirectories by Daniel Shiffman. This example has three functions:<br /> 1) List the names of files in a directory<br /> 2) List the names along with metadata (size, lastModified)<br /> of files in a directory<br /> 3) List the names along with metadata (size, lastModified)<br /> of files in a directory and all subdirectories (using recursion)

  
  
  void setup() {
  
    // Path
    String path = sketchPath;
  
    println("Listing all filenames in a directory: ");
    String[] filenames = listFileNames(path);
    println(filenames);
    
    println("\nListing info about all files in a directory: ");
    File[] files = listFiles(path);
    for (int i = 0; i < files.length; i++) {
      File f = files[i];    
      println("Name: " + f.getName());
      println("Is directory: " + f.isDirectory());
      println("Size: " + f.length());
      String lastModified = new Date(f.lastModified()).toString();
      println("Last Modified: " + lastModified);
      println("-----------------------");
    }
    
    println("\nListing info about all files in a directory and all subdirectories: ");
    ArrayList allFiles = listFilesRecursive(path);
    
    for (int i = 0; i < allFiles.size(); i++) {
      File f = (File) allFiles.get(i);    
      println("Name: " + f.getName());
      println("Full path: " + f.getAbsolutePath());
      println("Is directory: " + f.isDirectory());
      println("Size: " + f.length());
      String lastModified = new Date(f.lastModified()).toString();
      println("Last Modified: " + lastModified);
      println("-----------------------");
    }
  
    noLoop();
  }
  
  // Nothing is drawn in this program and the draw() doesn't loop because
  // of the noLoop() in setup()
  void draw() {
  
  }
  
  // This function returns all the files in a directory as an array of Strings  
  String[] listFileNames(String dir) {
    File file = new File(dir);
    if (file.isDirectory()) {
      String names[] = file.list();
      return names;
    } else {
      // If it's not a directory
      return null;
    }
  }
  
  // This function returns all the files in a directory as an array of File objects
  // This is useful if you want more info about the file
  File[] listFiles(String dir) {
    File file = new File(dir);
    if (file.isDirectory()) {
      File[] files = file.listFiles();
      return files;
    } else {
      // If it's not a directory
      return null;
    }
  }
  
  // Function to get a list ofall files in a directory and all subdirectories
  ArrayList listFilesRecursive(String dir) {
     ArrayList fileList = new ArrayList(); 
     recurseDir(fileList,dir);
     return fileList;
  }
  
  // Recursive function to traverse subdirectories
  void recurseDir(ArrayList a, String dir) {
    File file = new File(dir);
    if (file.isDirectory()) {
      // If you want to include directories in the list
      a.add(file);  
      File[] subfiles = file.listFiles();
      for (int i = 0; i < subfiles.length; i++) {
        // Call this function on all files in this directory
        recurseDir(a,subfiles[i].getAbsolutePath());
      }
    } else {
      a.add(file);
    }
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.