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

运行Java类读取同目录txt文件提示FileNotFoundException报错如何解决

Java读取同目录txt文件抛出FileNotFoundException解决方案

报错信息:Exception in thread "main" java.io.FileNotFoundException: Employees.txt (No such file or directory)

核心原因

直接传入文件名构造文件对象时,Java默认从进程启动的工作目录查找文件,工作目录和class文件所在目录没有必然关联,哪怕txt和class放在同一个文件夹,只要进程工作目录不是这个文件夹,就会报找不到文件的错误。

快速解决方法

  • 方法1:确认当前工作目录,把文件放到对应路径
    在读取文件的代码前加入下面的代码,打印进程当前的工作目录:
    System.out.println(System.getProperty("user.dir"));
    把Employees.txt放到输出的路径下,就能直接用文件名读取文件。
  • 方法2:从class同目录加载资源(推荐,兼容性更强)
    如果需要固定读取和class同目录下的文件,不要使用File API直接读取,改用类加载器加载classpath下的资源:
// 把示例中的类名替换为你当前运行的类的类名
InputStream stream = 当前运行类名.class.getResourceAsStream("Employees.txt");
if (stream == null) {
    throw new IllegalArgumentException("class同目录下不存在Employees.txt文件");
}
// 后续读取内容示例
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line;
while ((line = reader.readLine()) != null) {
    // 自行处理每行内容
}
reader.close();

常见场景说明

  • 如果使用IDE(IDEA、Eclipse等)运行项目,默认工作目录是项目根目录,不是class输出的bin、target/classes等目录,建议把txt文件放到项目的资源目录(Maven项目为src/main/resources,普通Java项目放到src目录下),IDE编译时会自动把资源文件复制到class输出目录,配合方法2的写法不会出现找不到文件的问题。
  • 项目打包成jar包运行时,File API无法直接读取jar包内部的资源文件,用类加载器的写法可以正常读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:15:01