Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解
2017-12-18 20:45
696 查看
唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException 系统找不到指定的文件,气死人啦。
还有就是:System.getProperty("user.dir"),都说获得的是“工作目录”,有老铁们在意这个,工作目录怎么理解吗?我这做了个简单的测试。
但是,你把这个配置文件放在项目的根目录下面,也就是 说你的项目文件夹下面直接放一个配置文件,这个时候,就可以,啥前缀不加的,就可以读取到,这个配置文件啦。
但是,这么放置配置文件,好像有点不合适。
那么,这个路径究竟该如何写,才不会报错呢?
1,在 java project 中的配置文件读取,项目打包是jar类型的。
默认定位到的当前用户目录("user.dir")(即工程根目录)
JVM就可以据"user.dir" + "你自己设置的目录" 得到完整的路径(即绝对路径)
这有个前提,你的工程不是web项目,不然,这个返回值就不是项目的根目录啦,是tomcat的bin目录。
2,在 java web project 中的配置文件读取
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") 的运行结果,如下。
还有就是: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 可不是让你,直接拿来使用的,得分情况而定。
System.out.println("getProperty(\"user.dir\") " + System.getProperty("user.dir")); System.out.println("getServletContext"); System.out.println("getRealPath " + request.getSession().getServletContext().getRealPath("/")); System.out.println("getContextPath " + request.getSession().getServletContext().getContextPath()); System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourcePaths("/")); System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/error.xml")); 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") 的运行结果,如下。
相关文章推荐
- 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: "file:///D:\testService"未能加载文件或程序集。系统找不到指定文件。
- 如何解决java.io.FileNotFoundException: mysql.ini (系统找不到指定的文件。)
- Log4J配置后, log4j:ERROR setFile(null,true) call failed. 报错:java.io.FileNotFoundException: /log/mytest2.log (系统找不到指定的路径。)
- Java properties | FileNotFoundException: properties (系统找不到指定的文件。)
- 解决 System.IO.FileNotFoundException: 未能加载文件或程序集“Team.DLinqDAL”或它的某一个依赖项。系统找不到指定的文件。
- 【已解决】Windows Service 问题System.IO.FileNotFoundException: 未能加载文件或程序集“file:///”或它 的某一个依赖项。系统找不到指定的文件。。
- nested exception is java.io.FileNotFoundException: config.xml (系统找不到指定的文件。)
- System.IO.FileNotFoundException:“未能加载文件或程序集“xxx”或它的某一个依赖项。系统找不到指定的文件。”
- Error:java.io.FileNotFoundException: 系统找不到指定的文件.
- java.io.FileNotFoundException关于使用Intellij Idea时系统找不到指定文件的解决方案
- log4j:ERROR setFile(null,true) call failed.java.io.FileNotFoundException: ..\logs\2010-1-19.log (系统找不到指定的路径。)
- Android 混淆提示 java.io.FileNotFoundException: ...\proguard-rules\release\aapt_rules.txt (系统找不到指定的路径)
- java.io.FileNotFoundException: .\xxx\xxx.png (系统找不到指定的路径。)
- web 项目log4j配置无法获取文件(java.io.FileNotFoundException: /logs/log.txt (No such file or directory))猜想
- java.io.FileNotFoundException: D:\workspace\gbrm\WebRoot\空缺职位列表20140414093026.xls (系统找不到指定的路径。)
- java.io.FileNotFoundException: D:\Workspaces\MyEclipse 8.5\spring\applicationContext.xml (系统找不到指定的文
- Android 混淆提示 java.io.FileNotFoundException: ...\proguard-rules\release\aapt_rules.txt (系统找不到指定的路径)
- java生成文件的默认保存路径与System.getProperty("user.dir")
- java.io.FileNotFoundException: 下载项目路径下的文件
- Unhandled Exception:System.DllNotFoundException: Unable to load DLL"**":找不到指定的模块