文件存在时抛出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
相关产品推荐
相关产品推荐

