// CSE 143, Winter 2010, Marty Stepp // This program contains a recursive file/directory-crawling method. 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. // Precondition: f != null and f exists public static void crawl(File f) { crawl(f, 0); } // This recursive "helper" method prints the given file/directory // and any files/directories inside it, at the given level of indentation. // Precondition: f != null and f exists private static void crawl(File f, int spaces) { // shared code for base and recursive case: print file name indented for (int i = 0; i < spaces; i++) { System.out.print(" "); } System.out.println(f.getName()); // recursive (tricky) case: print sub-files/folders inside directory if (f.isDirectory()) { for (File subfile : f.listFiles()) { // System.out.print(" " * ... the number of calls); crawl(subfile, spaces + 4); } } } }