You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动