# Java: Example - Recursive List

Here is an example of listing files and directories recursively.

    // RecusiveList -- Recursively list directories and files
    // Fred Swartz 1997-08-06 (Bangkok, Thailand)
    //     revised 2000-10-31 (Rota, Spain)

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

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

        //===================================================================== main
        public static void main(String[] args) {
            indent[0] = indentString;
            for (int i = 1; i < maxDepth; i++) {
               indent[i] = indent[i-1] + indentString;
            }

            String root = (args.length>0) ? args[0] : System.getProperty("user.dir");
            File start = new File(root);
            if (start != null && start.isDirectory()) {
                listDirContents(start, 0);
            }else{
                System.out.println("Not a directory: " + args[0]);
            }
        }//end main

        //========================================================== listDirContents
        public static void listDirContents(File someDirectory, int depth) {
            if (depth > maxDepth) return;
            String[] fileOrDirName = someDirectory.list(); // list of files and dirs
            Arrays.sort(fileOrDirName);
            for (int i = 0; i < fileOrDirName.length; i++) {
                System.out.println(indent[depth] + fileOrDirName[i]); // print it
                File f = new File(someDirectory, fileOrDirName[i]);
                if (f.isDirectory()) {
                    listDirContents(f, depth+1); // Recursively list contents of dir
                }
            }
        }//endmethod listDirContents

    }//endclass