windows 词典的递归搜索功能。如何?

Recursive search function for windows dictornaries. How?

我有一个作业,我必须使用递归方法在字典 i "stand in right now" 中查找任何文件。词典显示在列表视图中,您可以在 GUI 中的文件夹中来回导航

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

应该使用的递归方法是在控制台中工作的方法:

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()) {

        }

    }

}

据我了解,您的 ListView 包含目录名称项。因此,您获取所选项目并获取其绝对路径作为 Path 类型。然后可以进行如下操作(注:包含Java8个代码)

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

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