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
相关产品推荐
相关产品推荐

