Java读取C盘banking.txt到ArrayList无输出问题排查
嘿,我来帮你捋捋这个问题~你遇到的打印结果为空的情况,可能有几个常见原因,咱们一步步排查:
可能的原因及排查步骤
1. 文件路径或文件名问题
虽然你写了C:\\banking.txt,但先确认两个关键细节:
- 文件真的在C盘根目录吗?打开文件资源管理器,直接输入
C:\banking.txt回车,看能不能直接打开这个文件。很多新手会不小心把文件存在用户文件夹(比如C:\Users\你的用户名\Documents)里,却误以为在根目录。 - 文件名有没有隐形错误?Windows默认会隐藏已知文件的扩展名,比如你看到的
banking.txt可能实际是banking.txt.txt。可以在文件夹选项里关闭「隐藏已知文件类型的扩展名」,再确认真实文件名。
2. 文件本身为空
打开banking.txt看看里面是不是真的有内容?如果文件里没有任何文字(连空白行都没有),那读取出来的ArrayList自然是空的。
3. 系统权限问题
C盘根目录属于系统分区,普通程序可能没有读取权限。你可以试试右键以管理员身份运行你的Java程序,看能不能读取到内容。
4. 调试辅助建议
给代码加几个调试输出,能帮你快速定位问题:
import java.util.ArrayList; import java.util.Scanner; import java.io.*; public class FileP { public static void main(String[] args) { File file = new File("C:\\banking.txt"); // 先确认文件是否存在 System.out.println("文件是否存在:" + file.exists()); // 如果存在,打印文件大小(判断是否为空) if (file.exists()) { System.out.println("文件大小(字节):" + file.length()); } try (Scanner read = new Scanner(file)) { // 使用try-with-resources自动关闭资源 ArrayList<String> myList = new ArrayList<String>(); while(read.hasNextLine()) { String line = read.nextLine(); // 打印每一行读取到的内容 System.out.println("读取到一行:" + line); myList.add(line); } System.out.println("最终列表:" + myList); } catch (FileNotFoundException e) { // 捕获异常并打印,方便排查 e.printStackTrace(); } } }
运行这段代码后,你能直观看到:
- 文件是否存在
- 文件大小(如果是0,说明文件为空)
- 每一行读取到的内容(如果有内容但没存入列表,能快速发现问题)
- 如果路径错误,会打印
FileNotFoundException的详细报错信息
内容的提问来源于stack exchange,提问作者Blue




