前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发实例:Java实现从文件夹中递归查找指定后缀名的文件

开发实例:Java实现从文件夹中递归查找指定后缀名的文件

作者头像
用户1289394
发布2024-03-20 15:00:12
1750
发布2024-03-20 15:00:12
举报
文章被收录于专栏:Java学习网

在Java开发中,经常需要对文件进行读写、查找和操作,因此,掌握文件操作技能非常重要。

以下是具体代码实现:

1、通过递归方式查找文件:

代码语言:javascript
复制
public static List<File> searchFiles(String folderPath, String suffix) {
    List<File> result = new ArrayList<>();
    File folder = new File(folderPath);
    if (folder.isDirectory()) {
        File[] files = folder.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                result.addAll(searchFiles(file.getAbsolutePath(), suffix));
            } else {
                if (file.getName().endsWith(suffix)) {
                    result.add(file);
                }
            }
        }
    }
    return result;
}

通过递归方式,我们可以遍历指定文件夹下所有的子文件夹和文件,并且只选取符合指定后缀名的文件进行存储和统计。

2、计算每个文件的行数:

代码语言:javascript
复制
public static int countLines(File file) throws IOException {
    int count = 0;
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line = null;
    while ((line = br.readLine()) != null) {
        count++;
    }
    br.close();
    return count;
}

该方法使用BufferedReader逐行读取文件,并统计每个文件的行数。

3、统计所有文件的行数并返回结果:

代码语言:javascript
复制
public static int countTotalLines(List<File> files) throws IOException {
    int totalLines = 0;
    for (File file : files) {
        totalLines += countLines(file);
    }
    return totalLines;
}

该方法遍历所有符合条件的文件,调用countLines方法计算每个文件的行数,并将所有文件的行数累加起来返回结果。

完整的代码如下所示:

代码语言:javascript
复制
import java.io.*;
import java.util.*;

public class FileLineCounter {

    public static void main(String[] args) throws IOException {
        String folderPath = "D:/test";
        String suffix = ".java";
        List<File> files = searchFiles(folderPath, suffix);
        int totalLines = countTotalLines(files);
        System.out.println("Total lines of code: " + totalLines);
    }

    public static List<File> searchFiles(String folderPath, String suffix) {
        List<File> result = new ArrayList<>();
        File folder = new File(folderPath);
        if (folder.isDirectory()) {
            File[] files = folder.listFiles();
            for (File file : files) {
                if (file.isDirectory()) {
                    result.addAll(searchFiles(file.getAbsolutePath(), suffix));
                } else {
                    if (file.getName().endsWith(suffix)) {
                        result.add(file);
                    }
                }
            }
        }
        return result;
    }

    public static int countLines(File file) throws IOException {
        int count = 0;
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line = null;
        while ((line = br.readLine()) != null) {
            count++;
        }
        br.close();
        return count;
    }

    public static int countTotalLines(List<File> files) throws IOException {
        int totalLines = 0;
        for (File file : files) {
            totalLines += countLines(file);
        }
        return totalLines;
    }
}

该程序可以统计指定文件夹下所有后缀名为.java的文件行数,同时具有很好的可扩展性,可以根据需要修改搜索和过滤条件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档