windows dictornaries的递归搜索功能。怎么样?

时间:2015-05-10 10:25:00

标签: java user-interface recursion javafx

我有一个任务,我必须使用递归方法来查找词典中的任何文件“我现在站在那里”。字典显示在列表视图中,您可以在GUI中的文件夹中来回导航

示例:如果我站在我的GUI中的词典导航器中的C:/ User / Me /然后我在我的gui的文本字段中键入“hello”,那么程序必须搜索名为“hello”的文件 - > C:/用户/ ME /。我试图解决这个问题,但结果却很乱,现在我需要一些帮助和指导

应使用的recurisve方法是在控制台中运行的方法:

public static String findHolger(File dir, String search) {

    if (dir.getName().contains((search))) {
        System.out.println(dir.getPath());
    }

    File[] files = dir.listFiles();

    for (int i = 0; i < files.length; i++) {
        // System.out.println(files[i]);

        if (files[i].getName().contains(search)) {
            System.out.println(files[i]);
        }
    }
    return search;
}

这是我迄今为止尝试过的任何成功:

public void findholger() {
//this method executes when search button is pressed

File dir = new File("C:/");
File[] files = dir.listFiles();
lvwMappesys.getItems().setAll(files);

    String result, q;

    q = txf.getSelectedText().trim();
    File file1 = lvwMappesys.getSelectionModel().getSelectedItem();

    if (lvwMappesys.getSelectionModel().getSelectedItem().getAbsolutePath() != null) {

    }

    File[] files = file1.listFiles();

    for (int i = 0; i < files.length; i++) {
        // System.out.println(files[i]);

        if (files[i].getName().contains(q)) {
            System.out.println(files[i]);
        }

        if (files[i].isDirectory()) {

        }

    }

}

1 个答案:

答案 0 :(得分:0)

据我所知,您的ListView包含目录名称。因此,您获取所选项目并获取其Path类型的绝对路径。然后,您可以执行以下操作(注意:包含Java 8代码)

Files.walk(path)
     .filter(Files::isRegularFile)
     .filter(path -> path.toAbsolutePath().toString().contains("hello"))
     .forEach(System.out::println);

这将递归搜索名称或父目录名称中包含“hello”的文件。您可以轻松修改filter()方法以满足您的需求,即如果您需要名为“hello”但不需要目录名称的文件等。