// Java example that recursively descends the directory tree.
// Uses Jtux, a Java interface to POSIX/SUS (www.basepath.com/aup/jtux).
//
// By Marc Rochkind, jtux@basepath.com
// 14-July-2003
import jtux.*;
class TreeList {
static void list(String entry, int level) {
int dir_fd = -1;
try {
String tabs = "";
for (int i = 0; i < level; i++)
tabs += "\t";
long dir = -1;
try {
dir = UDir.opendir(entry);
}
catch (UErrorException e) {
System.out.println(tabs + entry + " - " + e);
return;
}
dir_fd = UFile.open(".", UConstant.O_RDONLY);
UProcess.chdir(entry);
UDir.s_dirent dirent = new UDir.s_dirent();
UFile.s_stat sbuf = new UFile.s_stat();
while ((dirent = UDir.readdir(dir)) != null) {
UFile.lstat(dirent.d_name, sbuf);
if (UFile.S_ISDIR(sbuf.st_mode) && !dirent.d_name.equals(".") &&
!dirent.d_name.equals("..")) {
System.out.println(tabs + dirent.d_name + ":");
if (UFile.S_ISLNK(sbuf.st_mode)) {
System.out.println(tabs + "[symbolic link -- skipping]");
}
else
list(dirent.d_name, level + 1);
}
else
System.out.println(tabs + dirent.d_name);
}
UDir.closedir(dir);
UProcess.fchdir(dir_fd);
UFile.close(dir_fd);
dir_fd = -1;
}
catch (UErrorException e) {
try {
if (dir_fd != -1)
UProcess.fchdir(dir_fd);
}
catch (Exception edummy) {
}
System.out.println(e);
}
}
public static void main(String args[]) {
list("/", 0);
}
}
|