Eclipse运行Java项目时路径与其他成功项目一致却无法读取文件怎么办?
Mac端Eclipse Java项目相对路径读取文件失败解决方案
核心原因
使用无路径前缀的文件名直接创建FileReader时,Java默认从JVM启动的工作目录查找目标文件。Eclipse中每个项目的默认工作目录为项目根文件夹,不同项目的工作目录相互独立,即便文件路径写法完全一致,也会因为查找根目录不同触发文件找不到异常。
验证方法
在代码中加入以下内容打印当前项目的实际查找根目录,确认路径差异:
System.out.println(System.getProperty("user.dir"));
可行解决方案
- 方案1:将
crimedata-full-month.csv文件放到上述打印出的工作目录下,原有代码无需修改即可正常读取。 - 方案2:使用绝对路径指定文件位置,Mac系统下绝对路径格式示例:
// 替换为你自己的文件实际存放路径 String fileName = "/Users/你的用户名/Documents/crimedata-full-month.csv"; FileReader file = new FileReader(fileName); Scanner scan = new Scanner(file);
- 方案3:将文件放在项目类路径下,用类加载器读取,彻底规避不同项目工作目录差异问题:
// 非Maven项目将csv放在src目录下,Maven项目放在src/main/resources目录下 InputStream is = Crimes.class.getClassLoader().getResourceAsStream("crimedata-full-month.csv"); // 注意检查文件是否存在的判空逻辑 if (is == null) { throw new RuntimeException("未找到类路径下的目标csv文件"); } Scanner scan = new Scanner(is);
额外注意:如果用方案3依旧读取失败,右键当前项目选择
Properties->Java Build Path->Source,检查对应资源目录的Excluded规则,确认没有屏蔽.csv后缀的文件。
内容的提问来源于stack exchange,提问作者Stoiccowboy
相关产品推荐
相关产品推荐

