唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException  系统找不到指定的文件,气死人啦。

还有就是:System.getProperty("user.dir"),都说获得的是“工作目录”,有老铁们在意这个,工作目录怎么理解吗?我这做了个简单的测试。

但是,你把这个配置文件放在项目的根目录下面,也就是 说你的项目文件夹下面直接放一个配置文件,这个时候,就可以,啥前缀不加的,就可以读取到,这个配置文件啦。

但是,这么放置配置文件,好像有点不合适。

那么,这个路径究竟该如何写,才不会报错呢?

1,在 java project 中的配置文件读取,项目打包是jar类型的。

System.getProperty("user.dir");

解释:

默认定位到的当前用户目录("user.dir")(即工程根目录)
JVM就可以据"user.dir" + "你自己设置的目录" 得到完整的路径(即绝对路径)
这有个前提,你的工程不是web项目,不然,这个返回值就不是项目的根目录啦,是tomcat的bin目录。

2,在 java web project 中的配置文件读取

ServletActionContext.getServletContext().xxx

这地方的 ServletActionContext 可不是让你,直接拿来使用的,得分情况而定。

  1.  
    System.out.println("getProperty(\"user.dir\") " + System.getProperty("user.dir"));
  2.  
    System.out.println("getServletContext");
  3.  
    System.out.println("getRealPath " + request.getSession().getServletContext().getRealPath("/"));
  4.  
    System.out.println("getContextPath " + request.getSession().getServletContext().getContextPath());
  5.  
    System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourcePaths("/"));
  6.  
    System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/error.xml"));
  7.  
    return mav;

想知道这个运行的结果吗?


getRealPath:
直接干到了打成war包target下的项目名称我这叫springMVC。
getContextPath:
这个就是获得当前URL的地址,我访问的这个链接全称是:http://localhost:8080/lxk/student
看运行结果,就是你这个 web app 的名称啦,因为后面的student算是子功能吧。
getResourcePaths:
获得的是打包之后target目录下的项目名称下的所有的目录,具体看图。

一般,老铁们搜索文章,都搜索到的是

System.getProperty("user.dir")
获得的是工作目录,这个搜索结果千篇一律。简直可怕。因为,这些老铁们从来没测试过。
什么叫工作目录。。。

可以看到,我这个在,Java web项目里面的允许结果,竟然是tomcat的bin 目录。这个懂的自然懂,不懂的,还是渣渣的迷糊。

在非Java web 的项目里面,这个 System.getProperty("user.dir") 的运行结果,如下。

 

转载:Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解的更多相关文章

  1. ipconfig/release时:系统找不到指定的文件。无法连接网络

    问题描述: ipconfig/release时:系统找不到指定的文件,无法连接网络,无法获取正确ip地址 处理方法: 修复Winsock和重置IP设置.第一步:开始-运行,输入cmd,打开命令行窗口. ...

  2. java.io.FileNotFoundException(系统找不到指定的路径。)

    报错:java.io.FileNotFoundException(系统找不到指定的路径.) 解决方法: 1.检查文件路径是否正确 2.另外,使用OutputStream时,如果文件不存在,会自动创建文 ...

  3. 解决java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, 系统找不到指定的文件 的错误

    一.外部环境: 系统环境:Windows 8 磁盘分区:只有C盘 开发环境:IntelliJ IDEA Community Edition 2016.1.3(64) 执行代码:rdd.saveAsTe ...

  4. Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:\Jenkins\Jenkins_home\workspace\jmeter_test"): CreateProcess error=2, 系统找不到指定的文件。

    想在本地执行我的python文件,我本地搭建了一个Jenkins,使用了execute shell来运行我的脚本,发现报错 [jmeter_test] $ sh -xe D:\tomcat\apach ...

  5. 【maven和jdk】报错:系统找不到指定的文件

    创建一个maven项目出错 问题描述 在idea.log出现如下错误(系统找不到指定的文件,但是不知道指定文件是什么) com.intellij.execution.process.ProcessNo ...

  6. java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件。)

    在使用MyBatis的逆向工程生成代码时,一直报错java.io.FileNotFoundException: generatorConfig.xml (系统找不到指定的文件.),如图 文件结构如下: ...

  7. Java properties | FileNotFoundException: properties (系统找不到指定的文件。)

    文件存储路径的问题 错误描述 :FileNotFoundException: init.properties (系统找不到指定的文件.) 1.方法一 InputStream fis =TestProp ...

  8. System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常

    前言: 最近公司增加服务器,在新增加的服务器中发现一些问题. 1.应用程序在读取证书文件中出现"系统找不到指定的文件."异常,但是已经确认证书文件存在.本地测试也可以读取,就在新增 ...

  9. MVC项目,系统找不到指定的文件。(异常来自 HRESULT:0x80070002)

    今天在用Visual Studio新建MVC项目的时候,遇到错误 系统找不到指定的文件.(异常来自 HRESULT:0x80070002) 解决办法:工具--> 扩展和更新 -->联机(V ...

随机推荐

  1. linux 输出重定向

    输出重定向 标准输入 文件描述符:0 设备:键盘 设备文件名:/dev/stdin 标准输出 文件描述符:1 设备:显示器 设备文件名:/dev/sdtout 标准输出重定向 命令 >> ...

  2. TCP Nagle算法&&延迟确认机制

    TCP Nagle算法&&延迟确认机制 收藏 秋风醉了 发表于 3年前 阅读 1367 收藏 0 点赞 0 评论 0 [腾讯云]买域名送云解析+SSL证书+建站!>>> ...

  3. BZOJ1791或洛谷4381 [IOI2008]Island

    一道基环树的直径 BZOJ原题链接 洛谷原题链接 又是一道实现贼麻烦的题.. 显然公园其实是基环树森林,求的最长距离其实就是求每一棵基环树的直径的总和. 对于每棵基环树,其直径要么经过环,要么是某个环 ...

  4. 检查mysql是否运行

    netstat -tunple|grep mysql

  5. MySQL连接、登录、密码等

    官方教程:https://dev.mysql.com/doc/refman/8.0/en/ 链接数据库,通过指定 -h 参数可以连接网络上的数据库 mysql -u 用户名 -h 服务器IP -P 端 ...

  6. JDK 规范目录

    JDK 规范目录 1.1 Java 异常处理 2.1 JDK 之 NIO 2 WatchService.WatchKey(监控文件变化) https://mp.weixin.qq.com/s/NIn2 ...

  7. partition

    一.背景 1.在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念. 2.分区表指的是在创建表 ...

  8. Sophus libSophus.so

    在编译包含Sophus的源文件的时候,出现如下错误 ../lib/libmyslam.so: undefined reference to `Sophus::SO3::SO3(double, doub ...

  9. gcc 库路径里同时有相同文件名的动态库和静态库

    找不到库的处理方案 有两种方法: 一.可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig(要有root权限才行). 二.把当前路径加 ...

  10. GG镜像导航

    供程序员使用. http://dir.scmor.com/google/