【经典小练习】输出文件路径名-LMLPHP

对指定目录下的所有 Java 文件进行编译、打包等处理;
查找指定目录下所有包含特定字符串的 Java 文件;
统计指定目录下所有 Java 文件的行数、字符数等信息;
这个时候我们就要把文件目录读取出来

🌹问题

编写程序,将某一个目录下(比如D:\workspace)(包含子目录)所有的java结尾的文件的绝对路径给输出在控制台。

✨思路

定义一个递归方法,用于遍历指定目录下的所有文件和子目录。
在递归方法中,对于每个文件或目录,判断是否是目录。如果是目录,则递归调用该方法;如果是文件,则判断文件名是否以 “.java” 结尾。
如果是以 “.java” 结尾的文件,则输出该文件的绝对路径。
在主程序中调用递归方法,传入目标目录的路径。

🍔代码

package org.Demo7;

import java.io.File;

public class file1 {
    public static void main(String[] args) {
        String directoryPath = "F:\\java项目"; // 指定工作空间目录

        // 调用递归方法查找并输出满足条件的文件路径
        findJavaFiles(directoryPath);
    }

    public static void findJavaFiles(String directoryPath) {
        File directory = new File(directoryPath);

        // 获取该目录下的所有文件和文件夹
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 如果是文件夹,递归调用该方法
                    findJavaFiles(file.getAbsolutePath());
                } else {
                    // 判断是否以.java结尾
                    if (file.getName().endsWith(".java")) {
                        // 输出满足条件的文件的绝对路径
                        System.out.println(file.getAbsolutePath());
                    }
                }
            }
        }
    }
}

如果我们想把文件名保存在其他文件中应该怎么办呢

🛸读取文件,并把文件名保存到文件中

package org.Demo7;
//
//import java.io.File;
//
//public class file1 {
//    public static void main(String[] args) {
//        String directoryPath = "F:\\java项目"; // 指定工作空间目录
//
//        // 调用递归方法查找并输出满足条件的文件路径
//        findJavaFiles(directoryPath);
//    }
//
//    public static void findJavaFiles(String directoryPath) {
//        File directory = new File(directoryPath);
//
//        // 获取该目录下的所有文件和文件夹
//        File[] files = directory.listFiles();
//        if (files != null) {
//            for (File file : files) {
//                if (file.isDirectory()) {
//                    // 如果是文件夹,递归调用该方法
//                    findJavaFiles(file.getAbsolutePath());
//                } else {
//                    // 判断是否以.java结尾
//                    if (file.getName().endsWith(".java")) {
//                        // 输出满足条件的文件的绝对路径
//                        System.out.println(file.getAbsolutePath());
//                    }
//                }
//            }
//        }
//    }
//}
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.File;

public class file1 {
    public static void main(String[] args) {
        String directoryPath = "F:\\java项目"; // 指定工作空间目录
        String outputFilePath = "G:\\files.txt"; // 输出文件路径

        // 调用递归方法查找并输出满足条件的文件路径
        findJavaFiles(directoryPath, outputFilePath);
    }

    public static void findJavaFiles(String directoryPath, String outputFilePath) {
        File directory = new File(directoryPath);

        // 获取该目录下的所有文件和文件夹
        File[] files = directory.listFiles();
        if (files != null) {
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath, true))) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        // 如果是文件夹,递归调用该方法
                        findJavaFiles(file.getAbsolutePath(), outputFilePath);
                    } else {
                        // 判断是否以.java结尾
                        if (file.getName().endsWith(".java")) {
                            // 输出满足条件的文件的绝对路径到文件
                            writer.write(file.getAbsolutePath());
                            writer.newLine();
                        }
                    }
                }
                System.out.println("Java文件路径已保存到: " + outputFilePath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

运行成功
【经典小练习】输出文件路径名-LMLPHP

【经典小练习】输出文件路径名-LMLPHP

11-25 21:57