考虑有一个名为“ 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);
        }
    }
}


它是一个简单的实现。希望你有主意。

10-06 03:37
查看更多