All pastes #718464 Raw Edit

Anonymous

public text v1 · immutable
#718464 ·published 2007-09-28 13:15 UTC
rendered paste body
import 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();
			}
	}
}