package futils;
import utils.Complex;
import java.io.File;
import java.util.Collections;
import java.util.Vector;
public class DirList {
private File startDir;
private Vector history = new Vector();
private int totalBytes = 0;
private String suffix = null;
private boolean verbose = false;
public static void main(String args[]) {
DirList dl = new DirList(".java");
dl.printFiles();
dl.sort();
dl.printFiles();
dl.printStats();
}
public void sort() {
Collections.sort(history);
}
public DirList(String _suffix) {
suffix = _suffix;
startDir = Futil.getReadDirFile(
"select a *." + suffix + " file");
startAtThisDir(startDir);
}
public DirList(File _startDir, String _suffix) {
startDir = _startDir;
startAtThisDir(startDir);
}
public void printStats() {
System.out.println(
"Saw " +
getTotalFiles() +
" *" +
suffix +
" files with a total size of " +
totalBytes +
" bytes");
}
public void printFiles() {
File f[] = getFiles();
for (int i = 0; i < f.length; i++)
System.out.println(f[i]);
}
public final void printVerbose(Object o) {
if (verbose)
System.out.println(o);
}
public void startAtThisDir(File f1) {
printVerbose("Selected -> " + f1);
printVerbose("Files in this Directory: ");
addFilesInThisDirectory(f1);
processAllDirectoriesInThisDirectory(f1);
}
private Vector vecDir = new Vector();
private File nextDir() {
return (File) vecDir.remove(vecDir.size() - 1);
}
private void addDirs(File dirList[]) {
if (dirList == null) return;
for (int i = 0; i < dirList.length; i++)
vecDir.addElement(dirList[i]);
}
private void processAllDirectoriesInThisDirectory(File f1) {
addDirs(f1.listFiles(new DirFilter()));
while (vecDir.size() > 0) {
File f = nextDir();
printVerbose("Selected -> " + f);
printVerbose("Files in this Directory: ");
addFilesInThisDirectory(f);
addDirs(f.listFiles(new DirFilter()));
}
}
private void addFilesInThisDirectory(File f1) {
File ls[] = f1.listFiles(new WildFilter(suffix));
if (ls == null) return;
for (int i = 0; i < ls.length; i++)
addFile(ls[i]);
}
private void addFile(File f2) {
int bytes = Futil.available(f2);
totalBytes += bytes;
printVerbose(f2 +
" has " +
bytes + " bytes");
history.addElement(f2);
}
public File getStartDir() {
return startDir;
}
public File[] getFiles() {
File f[] = new File[history.size()];
history.copyInto(f);
return f;
}
public int getTotalBytes() {
return totalBytes;
}
public int getTotalFiles() {
return history.size();
}
public String getSuffix() {
return suffix;
}
}