本文讲解如何使用java的files.readalllines()读取文本文件后,将每行内容逐行打印到控制台,而非显示为带方括号和逗号的列表字符串。核心在于理解list.tostring()的默认行为,并通过遍历实现清晰、可读的逐行输出。
本文讲解如何使用java的files.readalllines()读取文本文件后,将每行内容逐行打印到控制台,而非显示为带方括号和逗号的列表字符串。核心在于理解list.tostring()的默认行为,并通过遍历实现清晰、可读的逐行输出。
在Java中,Files.readAllLines(Path.of(path)) 是读取文本文件的常用方式,它会将文件按行分割,返回一个 List —— 每个元素对应文件中的一行(不含换行符)。但若直接对这个列表调用 System.out.println(list),控制台输出会是类似 [text, some other text, more text] 的格式。这是因为 List 接口的默认 toString() 实现会以“[e1, e2, e3]”形式拼接所有元素,
并非文件原始排版
。
要还原为自然的逐行显示(即每行文本独立成行),必须显式遍历列表并分别打印每一项。以下是三种推荐写法,均简洁高效:
✅
推荐方式一:方法引用(最简洁)
✅
推荐方式二:增强型for循环(可读性高,适合初学者)
✅
推荐方式三:传统for循环(适用于需索引的场景)
⚠️
注意事项
:
不要使用 System.out.println(readFileContents(...)) —— 这是问题根源;
确保文件路径正确且具有读取权限,否则 readFileContents() 将返回空列表(Collections.emptyList()),导致无输出;
若需保留原始换行/缩进或处理大文件,建议改用 Files.lines() 流式读取(避免一次性加载全部内容到内存);
对于游戏类应用,可进一步封装为 printFileContents(String path) 工具方法,提升复用性。
总结:List 是容器,不是
格式化输出
工具。逐行打印的本质是
遍历 + 单次 println
。掌握这一原则,即可灵活适配日志输出、配置加载、游戏剧情展示等多种实际场景。
List lines = readFileContents("game_info.txt");
lines.forEach(System.out::println); List lines = readFileContents("game_info.txt");
for (String line : lines) {
System.out.println(line);
} List lines = readFileContents("game_info.txt");
for (int i = 0; i < lines.size(); i++) {
System.out.println(lines.get(i));
} 