// CSE 143, Summer 2011, Hal Perkins (based on Wi11 version by Marty Stepp) // Request a filename from the user then print a listing of that file and // any subdirectories contained in it, recursively. import java.io.*; // for File import java.util.*; // for Scanner public class FileCrawler { public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print("Directory to crawl? "); String directoryName = console.nextLine(); File f = new File(directoryName); crawl(f); } // Prints the given file/directory and any files/directories inside it, // starting with zero indentation. // Precondition: f != null and f exists public static void crawl(File f) { crawl(f, ""); } // Print the given file/directory name and any file/directory // names inside it with given indent preceding each output line. // Precondition: f != null and f exists private static void crawl(File f, String indent) { System.out.println(indent + f.getName()); if (f.isDirectory()) { // recursive case: directory // print everything in the directory File[] subFiles = f.listFiles(); indent += " "; for (File subfile: subFiles) { crawl(subfile, indent); } } } }