Dotcpp  /  试卷列表  /  Java  /  题目 8084

利用File类遍历指定目录下的所有文件

利用File类遍历指定目录下的所有文件

答案
import java.io.File;

public class FileTraversal {
    public static void main(String[] args) {
        String path = "test"; // 指定目录路径
        File dir = new File(path);

        // 1. 只遍历当前目录下的文件和文件夹
        System.out.println("=== 单层遍历 ===");
        listCurrentDir(dir);

        // 2. 递归遍历所有子目录下的文件
        System.out.println("\n=== 递归遍历所有文件 ===");
        listAllFiles(dir);
    }

    /**
     * 只遍历当前目录下的内容(不进入子目录)
     */
    public static void listCurrentDir(File dir) {
        if (!dir.exists()) {
            System.out.println("目录不存在:" + dir.getAbsolutePath());
            return;
        }
        if (!dir.isDirectory()) {
            System.out.println("这不是一个目录:" + dir.getAbsolutePath());
            return;
        }

        File[] files = dir.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    System.out.println("[文件夹] " + f.getName());
                } else {
                    System.out.println("[文件] " + f.getName());
                }
            }
        }
    }

    /**
     * 递归遍历目录及其所有子目录下的文件
     */
    public static void listAllFiles(File dir) {
        if (!dir.exists() || !dir.isDirectory()) {
            System.out.println("无效的目录:" + dir.getAbsolutePath());
            return;
        }

        File[] files = dir.listFiles();
        if (files == null) return;

        for (File f : files) {
            if (f.isDirectory()) {
                // 是目录,递归进入
                listAllFiles(f);
            } else {
                // 是文件,直接输出绝对路径
                System.out.println(f.getAbsolutePath());
            }
        }
    }
}

题目信息

题号:8084
题型:简答题
知识点:Java
难度:普通