Java实战:递归查找指定后缀名的文件

在日常的软件开发中,经常需要处理文件操作。假设我们有一个需求:从一个包含大量JSON文件的文件夹中提取出所有的JSON文件以进行进一步处理。本文将介绍如何利用Java编写一个高效的方法来递归查找指定后缀名的文件。

代码实现:

java 复制代码
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileProcessor {

    /**
     * 查找指定文件夹下的所有指定后缀文件
     *
     * @param directoryPath 文件夹路径
     * @param fileSuffix    文件夹后缀
     * @return List<File>
     */
    public List<File> findJSONFiles(String directoryPath, String fileSuffix) {
        List<File> jsonFiles = new ArrayList<>();
        File directory = new File(directoryPath);

        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isFile() && file.getName().toLowerCase().endsWith(fileSuffix.toLowerCase())) {
                        jsonFiles.add(file);
                    } else if (file.isDirectory()) {
                        // 递归调用,处理子目录
                        jsonFiles.addAll(findJSONFiles(file.getAbsolutePath(), fileSuffix));
                    }
                }
            }
        }
        return jsonFiles;
    }

    public static void main(String[] args) {
        FileProcessor processor = new FileProcessor();
        String folderUrl = "C:\\Users\\yz\\Desktop\\json\\history\\history\\";
        List<File> jsonFiles = processor.findJSONFiles(folderUrl, ".json");

        // 输出所有找到的JSON文件路径
        jsonFiles.forEach(file -> System.out.println(file.getPath()));
    }
}

使用说明:

在上面的代码中,我们首先定义了一个FileProcessor类,其中包含了一个findJSONFiles方法,用于查找指定文件夹下的所有指定后缀名的文件。然后在main方法中,我们创建了一个FileProcessor对象,并调用findJSONFiles方法来查找指定文件夹中的所有JSON文件。最后,我们输出了所有找到的JSON文件的路径。

结论:

通过这个简单而有效的Java方法,我们能够轻松地从指定的文件夹中提取出所有的JSON文件。这种方法不仅可以用于处理历史数据导入的场景,还可以应用于其他需要递归查找文件的情况,为文件操作提供了便利和效率。

相关推荐
ZealSinger6 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design14 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
Sweet锦1 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
可乐鸡翅yeah_2 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
专业程序开发源3 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568033 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
樱花落木兰3 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
HAHAXX83 小时前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa