我试图想出一个递归函数,我可以用它来创建树视图结构,角树视图使用。
这里有一个显示结构的链接:https://github.com/eu81273/angular.treeview
我试图创建基于服务器上的文件目录的树视图,并希望通过JSON从Java代码返回。我正在努力创建将遍历目录并创建具有子结构的必要结构的函数。
我已经创建了一个POJO类来反映服务器端的树视图结构。我试图使用以下函数作为此函数的基础:
private static void listFiles(File rootDir, String[] files){
for (String fileName: files){
File fileOrDir = new File(rootDir, fileName);
if (fileOrDir.isDirectory()){
listFiles(fileOrDir, fileOrDir.list());
} else {
System.out.println(fileOrDir);
}
}
}
下面是一个对象的剪辑:
public class AngularTreeview {
private String label;
private String id;
private Collection<AngularTreeview> children;
}
关于功能的建议将是很棒的。此外,关于如何浏览服务器上的文件系统或创建树视图结构的更简单方法的备选方案也很有用。谢谢!
public static int level = 0;
private static void listFiles(File rootDir, String[] files){
String name = rootDir.toString();
System.out.println(name.substring(name.lastIndexOf('\') + 1));
for (String fileName: files){
File fileOrDir = new File(rootDir, fileName);
if (fileOrDir.isDirectory()){
level += 1;
for(int i = 0; i < level; ++i)
System.out.print('*');
listFiles(fileOrDir, fileOrDir.list());
level -= 1;
} else {
for(int i = 0; i <= level; ++i)
System.out.print('*');
System.out.println(fileOrDir);
}
}
}
您可以使用其他方法来跟踪级别并将('*')替换为所需的空格或't'。
File root = new File("C:\Root");
String[] files = root.list();
listFiles(root, files);
示例的输出:
根*管理
根* * C: admin subAdmin1.txt
* * subAdmin2
* * * subAdmin2-1
* * * * C: admin 根subAdmin2 subAdmin2-1 subAdmin2 - 1 - 1. - txt
* * * * C: admin 根subAdmin2 subAdmin2-1 subAdmin2 - 1 - 2. - txt
*客人
根* * C: 客人 subguest1.txt
* * subguest2
*用户
根* * C: 用户 superuser1.txt
* * superUser2
这就是我最终要做的,我仍然在使用angular treeview的结果,但我会在它工作时发布。
public AngularTreeview getDirectoryTreeview(){
File node = new File("C:\[yourlocation]");
String[] subNote = node.list();
AngularTreeview treeview = new AngularTreeview(node.getName());
treeview.setChildren(setChildrenFunction(node, subNote));
return treeview;
}
public Collection<AngularTreeview> setChildrenFunction(File rootDir, String[] subfiles) {
Collection<AngularTreeview> treecol = new ArrayList<AngularTreeview>();
for (String fileName : subfiles){
AngularTreeview child = new AngularTreeview(fileName);
File fileOrDir = new File(rootDir, fileName);
if (fileOrDir.isDirectory()){
child.setChildren(setChildrenFunction(fileOrDir, fileOrDir.list()));
}
treecol.add(child);
}
return treecol;
}