考虑有一个名为“ test.txt”的文件,它具有下面的文件结构(请参见下图),红色表示文件夹,蓝色表示文件。现在可以编写代码来标识父节点和子节点,并以指定谁是父节点的方式为每个节点分配值。
我的数据库结构:这里的id是一个auto_increment值,其中的标题可以是文件夹名称或文件名(即父节点和子节点的名称),parent_id是引用id的外键。
CREATE TABLE category (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
parent_id int(10) unsigned DEFAULT NULL,
PRIMARY KEY (id),
FOREIGN KEY (parent_id) REFERENCES category (id)
ON DELETE CASCADE ON UPDATE CASCADE);
最佳答案
按照上述注释中的建议,使用JDBC从数据库中获取标题(例如dir),然后从this SO线程中选择这些选项之一,并在您的服务/视图中适当使用它。
获得标题后,仅需提示即可,这就是您所需要的:
public static void main(String[] args) {
String maindirpath = "/your/main/dir/title";
System.out.println("Printing files under : " + maindirpath);
File maindir = new File(maindirpath);
if (maindir.exists() && maindir.isDirectory()) {
File arr[] = maindir.listFiles();
RecursivePrint(arr, 0);
}
}
static void RecursivePrint(File[] arr, int level) {
for (File f : arr) {
for (int i = 0; i < level; i++)
System.out.print("\t");
if (f.isFile())
System.out.println("|_ " + f.getName());
else if (f.isDirectory()) {
System.out.println("[" + f.getName() + "]");
RecursivePrint(f.listFiles(), level + 1);
}
}
}
它是一个简单的实现。希望你有主意。