|
// 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); } } |