我有一个任务,我必须使用递归方法来查找词典中的任何文件“我现在站在那里”。字典显示在列表视图中,您可以在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()) {
}
}
}
答案 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”但不需要目录名称的文件等。