You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何从文件读取文件名并读取对应文件内容

嘿,这个需求其实挺常见的,我来一步步给你拆解怎么实现哈!

在Java中实现从文件读取文件名并批量读取文件内容

核心思路拆解

整个流程分两步走就清晰了:

  • 第一步:读取存储文件名的主文件(比如file.txt),把里面的文件名列表提取出来。
  • 第二步:遍历这个文件名列表,逐个读取对应文件的内容。

具体实现代码

我给你写个完整的示例,用Java 8+的NIO API(比传统IO更简洁高效),同时加上必要的异常处理,让程序更健壮:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class BatchFileReader {
    public static void main(String[] args) {
        // 主文件路径,也就是存储文件名的file.txt
        Path masterFilePath = Paths.get("file.txt");
        
        try {
            // 第一步:读取主文件中的所有文件名,默认按行读取(每行一个文件名)
            List<String> fileNames = Files.readAllLines(masterFilePath);
            
            // 第二步:遍历每个文件名,读取对应文件内容
            for (String fileName : fileNames) {
                // 构建目标文件的路径,这里假设目标文件和主文件在同一目录下
                Path targetFilePath = Paths.get(fileName);
                
                // 先检查文件是否存在且是常规文件,避免无意义的报错
                if (Files.exists(targetFilePath) && Files.isRegularFile(targetFilePath)) {
                    // 读取文件内容,这里按行读取;Java 11+可以用Files.readString()一次性读完整内容
                    List<String> contentLines = Files.readAllLines(targetFilePath);
                    
                    // 输出结果,你可以根据需求改成存储到集合、写入其他文件等操作
                    System.out.println("=== 读取文件 " + fileName + " 的内容 ===");
                    contentLines.forEach(System.out::println);
                } else {
                    System.err.println("警告:文件 " + fileName + " 不存在或不是常规文件,跳过读取");
                }
            }
        } catch (IOException e) {
            System.err.println("读取过程中发生IO错误:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

关键细节说明

  • 路径适配:示例中假设目标文件和file.txt在同一目录下,如果不在,你需要修改Paths.get(fileName)为完整路径,比如Paths.get("target-files/", fileName)。
  • 版本兼容:如果用的是Java 11及以上,替换Files.readAllLines(targetFilePath)为Files.readString(targetFilePath),可以一次性读取整个文件内容,代码会更简洁。
  • 异常处理:IO操作必须捕获IOException,不然程序会直接崩溃,示例里已经做了基本的错误提示和堆栈打印,方便排查问题。
  • 格式兼容:如果你的file.txt里的文件名是用逗号/空格等分隔的(比如text1.txt,txt2.txt),可以把第一步改成这样:
    // 假设用逗号分隔文件名
    String allNames = Files.readString(masterFilePath);
    List<String> fileNames = List.of(allNames.split(","));
    

内容的提问来源于stack exchange,提问作者user9835835

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:49:29