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.
}
}
}
}
|