Home Java Java-tips Io 10file Example - Recursive List

Ask Questions?

View Latest Questions

Advertisement


 
 

Example - Recursive List
Posted on: February 19, 2008 at 12:00 AM
Here is an example of listing files and directories recursively.

Java Notes

Example - Recursive List

Here is an example of listing files and directories recursively.

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
// RecusiveList -- Recursively list directories and files
// Fred Swartz 1997-08-06 (Bangkok, Thailand)
//     revised 2000-10-31 (Rota, Spain)
//     revised 2006-02-01 (Rodenbach, Germany)

import java.util.*;
import java.io.*;

public class RecursiveList {
    static final int      MAX_DEPTH = 20;  // max 20 levels (directory nesting)
    static final String[] indent   = new String[MAX_DEPTH]; // array of indents.
    static final String   INDENT_STRING = "   ";             // single indent.

    //===================================================================== main
    public static void main(String[] args) {
        //... Initialize array of blank indentation amounts.
        indent[0] = "";
        for (int i = 1; i < indent.length; i++) {
           indent[i] = indent[i-1] + INDENT_STRING;
        }

        System.out.println("Enter the name of a directory for recustive listing.");
        Scanner in = new Scanner(System.in);

        while (in.hasNext()) {
            String root = in.next();
            File start = new File(root);
            if (start != null && start.isDirectory()) {
                listRecursively(start, 0);
            } else {
                System.out.println("Not a directory: " + root);
            }
        }
    }


    //========================================================== listRecursively
    public static void listRecursively(File fileOrDir, int depth) {
        System.out.println(indent[depth] + fileOrDir.getName()); // print it

        if (fileOrDir.isDirectory()  && depth <= MAX_DEPTH) {

            File[] dirContents = fileOrDir.listFiles(); // List of files/dirs.
            Arrays.sort(dirContents);

            for (File f : dirContents) {
                listRecursively(f, depth+1); // Recursively list.
            }
        }
    }

}
Copyleft 2006 Fred Swartz MIT License
Advertisement


DMCA.com