递归实现列出当前工程下所有.java文件
时间: 2023-04-27 11:00:05 浏览: 79
以下是递归实现列出当前工程下所有.java文件的代码:
```java
import java.io.File;
public class ListJavaFiles {
public static void main(String[] args) {
File projectDir = new File(".");
listJavaFiles(projectDir);
}
public static void listJavaFiles(File dir) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
listJavaFiles(file);
} else if (file.getName().endsWith(".java")) {
System.out.println(file.getAbsolutePath());
}
}
}
}
```
代码解析:
1. 首先定义了一个 `listJavaFiles` 方法,该方法接收一个 `File` 类型的参数,表示要列出其中的所有 `.java` 文件。
2. 在方法中,首先调用 `listFiles` 方法获取当前目录下的所有文件和文件夹。
3. 然后遍历这些文件和文件夹,如果是文件夹,则递归调用 `listJavaFiles` 方法,如果是 `.java` 文件,则输出其绝对路径。
4. 在 `main` 方法中,首先获取当前工程的目录,然后调用 `listJavaFiles` 方法,即可列出所有 `.java` 文件的路径。
注意事项:
1. 代码中使用了 `endsWith` 方法判断文件名是否以 `.java` 结尾,这种方式并不是非常严谨,因为有可能存在文件名为 `.java` 的文件,但是不是 Java 源文件。更好的方式是使用正则表达式判断文件内容是否符合 Java 语法规范。
2. 代码中没有处理文件访问权限的问题,如果当前用户没有读取某个文件的权限,程序将会抛出异常。可以在代码中添加异常处理逻辑,或者使用 Java 8 的新特性 `Files.walk` 方法来遍历文件,该方法可以自动处理文件访问权限的问题。