Also available as ListFiles.java

/**
 * Title: ListFiles
 * Description: Uses File objects to print a recursive list of
 *  files/directories
 * @author hollingd@cs.rpi.edu
 */
import java.io.*;

class ListFiles {

        public static void main(String [] args ) {
                File f;
                try {
                        f = new File(args[0]);
                        // print info about the file with indentation ""
                        Print(f,"");
                } catch (Exception e) {
                        System.out.println("Invalid usage");
                        e.printStackTrace();
                }
        }

        // prints information about a file or directory
        // for files: shows the name and size
        // for directories, shows the name and a list of everything
    //  inside the directory (recursively).
    // indent is used to make the directory list look
    //  like and indented (outline mode) list
        static public void Print(File f,String indent) {
                if (f.isFile() ) {
                        // it's a file
                        System.out.println(indent + f.getName()+ " (" + f.length() + " bytes)");
                } else if (f.isDirectory()) {
                        // it's a directory
                        System.out.println(indent + f.getName() + " (is a directory)");
                        File[] sublist = f.listFiles();
                        for (int i=0;i<sublist.length;i++) {
                                Print(sublist[i],indent+"  ");
                        }
                } else {
                        // it's not a file or directory - skip it
                }
        }                
}