MST

星途 面试题库

面试题:Java中如何利用文件目录管理类实现特定目录下所有Java文件的筛选

在Java中,给定一个目录路径,请使用文件目录管理相关类(如File类等)编写代码,实现筛选出该目录及其所有子目录下的所有.java文件,并将文件路径存储到一个List集合中。阐述实现思路并写出核心代码。
47.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用File类表示给定的目录路径。
  2. 编写一个递归方法,用于遍历目录及其所有子目录。
  3. 在递归方法中,判断当前文件或目录是否为目录,如果是目录,则递归调用该方法继续遍历;如果是文件且文件名以.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);
        }
    }
}

在上述代码中:

  1. findJavaFiles(String directoryPath)方法是对外公开的入口方法,用于初始化List并开始遍历目录。
  2. findJavaFiles(File directory, List<String> javaFiles)是递归方法,用于实际的目录遍历和文件筛选。
  3. main方法中,将your_directory_path替换为实际需要遍历的目录路径,运行代码即可筛选出所有.java文件路径并打印。