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

二维数组读取文本文件动物数据异常:文件存在却提示未找到

解决Java Scanner找不到文件的问题

兄弟,你遇到的这个“找不到文件”的坑我之前也踩过!明明文件就在那,程序就是看不见,大概率是这几个原因,一个个排查:

  • 文件路径没搞对
    你写的new File("animals.txt")是相对路径,程序会从当前工作目录找文件,而这个目录不一定是你放文件的地方!比如在IDEA/Eclipse里,默认工作目录是项目根目录,不是src文件夹。如果你把文件放在src里,得改成"src/animals.txt";要是拿不准,直接用绝对路径,比如Windows下"C:/你的项目路径/animals.txt",mac/Linux下"/Users/你的用户名/项目路径/animals.txt"。

  • 文件名偷偷变了
    别笑,Windows默认会隐藏已知文件后缀,比如你明明存的是animals.txt,实际可能是animals.txt.txt!去文件夹选项里关掉“隐藏已知文件类型的扩展名”,看看真实文件名是不是拼写错了,比如少个s写成animal.txt。

  • 权限不够读不了
    有时候文件所在的文件夹被设置了只读,或者系统权限限制程序访问。简单测试:把文件复制到桌面,用绝对路径读取,要是能成功,就是原文件夹权限的问题。

另外,给你两个实用的改进建议:

  1. 打印详细异常信息
    你现在只提示“could not find file”,但Java的异常栈能告诉你更多细节!把catch块改成这样:

    try {
        animals = new Scanner(new File("animals.txt"));
        // 你的二维数组处理代码
    } catch (FileNotFoundException e) {
        e.printStackTrace(); // 打印完整异常,能看到具体是路径错了还是真的不存在
    }
    
  2. 用类加载器读取更靠谱
    如果你是做Java项目(比如Maven/Gradle),把文件放在src/main/resources目录下,然后用类加载器读取,这样不管项目跑在哪,都能找到文件:

    try {
        // 从类路径中获取文件
        URL fileUrl = getClass().getResource("/animals.txt");
        if (fileUrl != null) {
            Scanner animals = new Scanner(new File(fileUrl.toURI()));
            // 接下来处理每行内容,拆分存入二维数组
            while (animals.hasNextLine()) {
                String line = animals.nextLine();
                String[] items = line.split(",\\s*"); // 按逗号加可选空格拆分
                // 把items存入你的二维数组
            }
            animals.close();
        } else {
            System.out.println("文件不在类路径里哦!");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    

按上面的方法排查,应该就能解决问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:46:54