rendered paste bodyimport java.io.*;
import java.util.*;
public class JWalker {
private int j = -1;
private int numOfFiles = 0;
private int numOfDirs = 0;
private int numOfReadErrors = 0;
private final void draw(String fileName, int rank, boolean isLastInDir) {
for (int i = 0; i < rank; i++)
System.out.print("| ");
System.out.print(isLastInDir ? "`-- " + fileName + "\n" : "|-- "
+ fileName + "\n");
}
final void reset() {
numOfFiles = 0;
numOfDirs = 0;
numOfReadErrors = 0;
j = -1;
}
final void printStats() {
System.out.println("\ndirectories: " + numOfDirs + ", files: "
+ numOfFiles + ", read errors: " + numOfReadErrors);
}
private final void scan(String path) {
File dir = new File(path);
File[] dirContents = dir.listFiles();
Arrays.sort(dirContents);
j++;
for (File x : dirContents) {
if (x.canRead()) {
draw(x.getName(), j, x == dirContents[dirContents.length - 1]);
if (x.isDirectory()) {
numOfDirs++;
scan(x.getAbsolutePath());
} else
numOfFiles++;
} else {
numOfReadErrors++;
draw(x.getName() + " [error reading]", j,
x == dirContents[dirContents.length - 1]);
}
}
j--;
}
public static void main(String[] args) {
JWalker jw = new JWalker();
if(args.length==0) {
jw.scan(".");
jw.printStats();
} else {
for(int i=0;i<args.length;i++) {
jw.scan(args[i]);
jw.printStats();
jw.reset();
}
}
}