我需要这样的文件系统视图。
folder_name
|_sub_folder1
| |_file1
| |_file2
|_sub_folder2
|_file1
请发表您的意见。
答案 0 :(得分:1)
Flex与您的问题有什么关系?
您已经问过这个问题并得到了答案:使用一棵树。此外,您没有说明是否要处理结构(通过它运行),将其存储在内存中,或者是否要以可视方式显示树。
如果您将其放入内存,请创建一个基于节点的树,其中每个Node
都有List
Node
秒。每个节点的值都是包含文件名的String
。以下是一个例子。我建议想出一些更有用的东西。您可以使用JTree API或DOM API,但我建议从头开始创建一个树,因为它的内存占用量要小得多。
import java.util.ArrayList;
import java.util.List;
public class TreeTest {
public static void main(String[] args) {
Tree<String> t = new Tree<>();
Tree.Node<String> usr = new Tree.Node<>("/usr");
Tree.Node<String> home = new Tree.Node<>("/home");
Tree.Node<String> share = new Tree.Node<>("/share");
Tree.Node<String> docs = new Tree.Node<>("/documents");
t.root = new Tree.Node<>("/");
t.root.children.add(usr);
t.root.children.add(home);
usr.children.add(share);
home.children.add(docs);
}
}
class Tree<T> {
Node<T> root;
static class Node<T> {
T file;
List<Node<T>> children = new ArrayList<>();
Node(T file) {
this.file = file;
}
}
}
答案 1 :(得分:1)
首先,浏览器中的Flex不会授予您访问任何文件系统信息的权限,只有AIR项目才允许您访问文件和目录。
现在,如果您只是想创建一个树,我发现最简单的方法是创建自己的对象,使用一个数组属性“children”,flex树控件将自动使用它来显示子节点。
这样:
<mx:Tree id="treeProducts" labelField="productName"
dataProvider="{_productList}">
</mx:Tree>
其中:
[Bindable]
var _productList:ArrayCollection;
并且对于放入_productList的每个对象,它需要:
tmpObject.children = new ArrayCollection();