Java- 递归获取包含文件的目录路径

Java- Recursively Get the path of directorys with files on it

如何递归获取文件所在目录的路径?

我正在编写一个程序,需要递归地获取所有包含 JAVA 个文件的目录的路径,例如:

|   |-->Foo2 --> lore.java
|Foo|
|   |-->Foo3 --> Foo4 --> ipsum.java

在这个例子中,我想保存在一个列表中:FOO/FOO2 和 FOO/FOO3/FOO4。可能有更多的嵌套目录,这些目录可能包含 java 个文件,例如:

|
|   |--> Foo2 --> lore.java
|   |
|Foo|         | --> ipsum.java
|   |--> Foo3 |
|   |         | --> Foo4 --> rosae.java

在这个例子中,我想保存 FOO/FOO2、FOO/FOO3 和 FOO/FOO3/FOO4。 有任何想法吗?谢谢!

看看以下内容是否适合您:

public static void main(String[] args) {

        List<Path> listOfDirectoryPaths = new ArrayList<>();

        try (Stream<Path> walk = Files.walk(Paths.get("."))) {
            walk.forEach(path -> {
                if(path.toFile().isFile() && path.toFile().getName().contains(".java")) {
                    listOfDirectoryPaths.add(path.getParent());
                }
            });

        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(listOfDirectoryPaths.stream().distinct().collect(Collectors.toList()));
    }
}

这将遍历您 运行 它所在的当前目录 (.)。 它将查找包含“.java”的文件 它将存储目录的路径。 最后,它将 return 只有不同的路径,所以你不会得到重复的。

尝试一下,然后根据需要进行修改。