面试题答案
一键面试实现思路
- 使用
File
类表示给定的目录路径。 - 编写一个递归方法,用于遍历目录及其所有子目录。
- 在递归方法中,判断当前文件或目录是否为目录,如果是目录,则递归调用该方法继续遍历;如果是文件且文件名以
.java
结尾,则将其路径添加到List
集合中。
核心代码
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class JavaFileFinder {
public static List<String> findJavaFiles(String directoryPath) {
List<String> javaFiles = new ArrayList<>();
File directory = new File(directoryPath);
if (directory.exists() && directory.isDirectory()) {
findJavaFiles(directory, javaFiles);
}
return javaFiles;
}
private static void findJavaFiles(File directory, List<String> javaFiles) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
findJavaFiles(file, javaFiles);
} else if (file.isFile() && file.getName().endsWith(".java")) {
javaFiles.add(file.getAbsolutePath());
}
}
}
}
public static void main(String[] args) {
String directoryPath = "your_directory_path";
List<String> javaFiles = findJavaFiles(directoryPath);
for (String filePath : javaFiles) {
System.out.println(filePath);
}
}
}
在上述代码中:
findJavaFiles(String directoryPath)
方法是对外公开的入口方法,用于初始化List
并开始遍历目录。findJavaFiles(File directory, List<String> javaFiles)
是递归方法,用于实际的目录遍历和文件筛选。- 在
main
方法中,将your_directory_path
替换为实际需要遍历的目录路径,运行代码即可筛选出所有.java
文件路径并打印。