A while ago I was trying to build a tree node hierarchy of a directory on my web server. The code on this page: http://livedemo.exadel.com/richfaces-demo/richfaces/treeNodesAdaptor.jsf?c=recursiveTreeNodesAdaptor shows how to build a tree node structure of a directory with in the application's own folder, but not a folder located outside of the application. I was able to achieve this functionality with very little change in code. I'm sure this trivial information to most, but for some it might help.
private static String SRC_PATH = "/download"; private FileSystemNode[] srcRoots; public synchronized FileSystemNode[] getSourceRoots() { if (srcRoots == null) { srcRoots = new FileSystemNode(SRC_PATH).getNodes(); } return srcRoots; }
public class FileSystemNode { private static FileSystemNode[] CHILDREN_ABSENT = new FileSystemNode[0]; private FileSystemNode[] children; private String path; private String shortPath; public FileSystemNode() { } public FileSystemNode(String path) { this.path = path; int idx = path.lastIndexOf('/'); if (idx != -1) { shortPath = path.substring(idx + 1); } else { shortPath = path; } } public synchronized FileSystemNode[] getNodes() { if (children == null) { File file = new File(this.path); if (file != null) { Object[] nodes = (Object[]) file.list(); if (nodes != null) { Arrays.sort(nodes); children = new FileSystemNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { String nodePath = nodes.toString(); if (nodePath.endsWith("/")) { nodePath = nodePath.substring(0, nodePath.length() - 1); } children = new FileSystemNode(this.path + "/" + nodePath); } } else { children = CHILDREN_ABSENT; } } } return children; } public String toString() { return shortPath; } public String getShortPath() { return shortPath; } }