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

文件存在时抛出FileNotFoundException的问题求助(附代码)

解决文件存在却抛出FileNotFoundException的问题

嘿,我来帮你搞定这个头疼的问题!明明文件在手边,程序却报错说找不到,大概率是程序找文件的位置不对或者一些容易忽略的细节,咱们一步步排查:

1. 先搞清楚程序在哪个目录找文件

你用的是相对路径"input.txt",Java会在当前工作目录(也就是你启动程序的目录)里找文件,而不是你的Java源代码所在的文件夹。比如在IDE里,默认工作目录是项目的根目录,不是src文件夹。

怎么验证?

在代码开头加一行打印当前工作目录的代码:

System.out.println("当前程序找文件的目录:" + System.getProperty("user.dir"));

运行后看看输出的路径,把input.txt放到这个目录里,或者在代码里写相对于这个目录的路径(比如"src/input.txt",如果文件确实在src文件夹下)。

2. 检查文件名的大小写(尤其非Windows系统)

如果是在Linux或macOS上,文件名是严格区分大小写的!比如文件实际叫Input.txt,但你代码里写的是input.txt,系统就会认成两个不同的文件。Windows虽然不区分,但最好养成大小写一致的习惯,避免跨平台踩坑。

3. 确认文件没被其他程序占用

如果文件正在被记事本、代码编辑器或者其他程序打开,Java可能无法读取它,也会抛出这个异常。先关闭所有打开这个文件的程序,再重新运行代码试试。

额外:优化你的代码(更安全简洁)

你的代码里关闭资源的方式有点风险——如果while循环里抛出异常,in_file.close()就不会执行了。可以用Java的try-with-resources语法,自动帮你关闭资源:

public static void read_all_lines() {
    String file_name = "input.txt";
    try (Scanner in_file = new Scanner(new File(file_name))) {
        while (in_file.hasNextLine()) {
            String line = in_file.nextLine();
            System.out.println(line);
        }
    } catch (FileNotFoundException ex) {
        System.out.println("Error: 文件不存在或无法访问");
        System.exit(0);
    }
}

内容的提问来源于stack exchange,提问作者M. Dingus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:26:04