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

Java 8+Eclipse Oxygen中无法通过相对/绝对路径读取文件求助

解决Java读取txt文件时的FileNotFoundException问题

我之前也踩过一模一样的坑,结合你的情况,给你几个实用的排查和解决办法:

1. 先确认文件的真实位置

你通过代码输出的当前目录是E:\eclipse-java-oxygen-R-win32\HashMap,先手动打开这个文件夹检查——你的txt文件是不是真的放在这里?很多人会下意识把文件丢到项目的src目录下,但程序的工作目录是项目根目录,这时候相对路径就不对了:如果文件在src里,你得写成src/yourfile.txt(Windows下用\\也可以,但Java更推荐/,兼容性更好)。

2. 用类路径读取更靠谱(推荐)

如果你的txt文件是项目的资源文件,以后还要打包成Jar的话,别用File类读,改用Class.getResourceAsStream(),这是Java读取资源文件的标准方式:

// 假设你的txt文件在src根目录下,用/开头表示类路径根
InputStream inputStream = YourMainClass.class.getResourceAsStream("/yourfile.txt");
if (inputStream == null) {
    throw new FileNotFoundException("找不到指定的txt文件,请检查路径是否正确");
}
// 用BufferedReader读取内容
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}
reader.close();
inputStream.close();

Eclipse会自动把src下的非Java文件复制到编译后的classes目录,这样不管是在IDE里运行还是打包成Jar,都能正确找到文件。

3. 检查Eclipse的运行工作目录

有时候Eclipse的运行配置会被修改,导致工作目录不是你预期的项目根目录:

  • 右键你的Java类 → Run As → Run Configurations
  • 切换到Arguments标签页
  • 查看Working directory部分,默认应该是${workspace_loc:/HashMap}(也就是你的项目根目录),如果不是,改回这个默认值就行。

4. 绝对路径要注意转义

如果你坚持用绝对路径,Windows系统里的\需要转义成\\,或者直接用/代替:

// 转义反斜杠的写法
File file = new File("E:\\eclipse-java-oxygen-R-win32\\HashMap\\yourfile.txt");
// 用正斜杠的写法(推荐,Java会自动处理)
File file = new File("E:/eclipse-java-oxygen-R-win32/HashMap/yourfile.txt");

排查小技巧

你可以在代码里打印出程序实际查找的文件路径,方便对比排查:

File testFile = new File("yourfile.txt");
System.out.println("程序实际查找的路径:" + testFile.getAbsolutePath());

看看输出的路径和你放文件的路径是不是一致,不一致的话调整路径就好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:49:57