import java.io.*; import java.util.*; public class DirList { File directory; int indent = 2; static Vector seen = new Vector(); public static void main(String[] args) { try { for (int i = 0; i < args.length; i++) { DirList dl = new DirList(args[i]); dl.list(); } } catch (IOException e) { System.err.println(e); } } public DirList(String s) throws IOException { this(new File(s), 2); } public DirList(File f) throws IOException { this(f, 2); } public DirList(File directory, int indent) throws IOException { if (directory.isDirectory()) { this.directory = new File(directory.getCanonicalPath()); } else { throw new IOException(directory.toString() + " is not a directory"); } this.indent = indent; String spaces = ""; for (int i = 0; i < indent-2; i++) spaces += " "; System.out.println(spaces + directory + File.separatorChar); } public void list() throws IOException { if (!seen.contains(this.directory)) { seen.addElement(this.directory); String[] files = directory.list(); String spaces = ""; for (int i = 0; i < indent; i++) spaces += " "; for (int i = 0; i < files.length; i++) { File f = new File(directory, files[i]); if (f.isFile()) { System.out.println(spaces + f.getName()); } else { // it's another directory DirList dl = new DirList(f, indent + 2); dl.list(); } } } } }