唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 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 可不是让你,直接拿来使用的,得分情况而定。

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:0000/lxk/student

看运行结果,就是你这个 web app 的名称啦,因为后面的student算是子功能吧。

getResourcePaths:

获得的是打包之后target目录下的项目名称下的所有的目录,具体看图。

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

System.getProperty("user.dir")

获得的是工作目录,这个搜索结果千篇一律。简直可怕。因为,这些老铁们从来没测试过。

什么叫工作目录。。。

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

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

欢迎工作一到五年的Java工程师朋友们加入Java技术交流:585550789

java找不到配置文件_Java项目读取配置文件时,找不到指定的文件???相关推荐

  1. java用户登录记住密码_java项目中登陆时记住密码

    1.在登陆的时候记住密码,不知自动登陆: 2.登陆页面,填写用户名,密码,点击记住密码,下次进入登陆页面的时候,填写同样的用户名,密码自动填充(在不一次会话的情况下也就是说在不关闭浏览器的情况下): ...

  2. 解决Spring项目读取配置文件中文乱码问题

    解决Spring项目读取配置文件中文乱码问题 properties配置文件读取时中文乱码,错误如下: 解决方法如下: **1.**打开IDEA的设置项,进入Editor->File encodi ...

  3. Gradle_04_解决多项目同级依赖时找不到符号的异常

    Gradle_04_解决多项目同级依赖时找不到符号的异常 参考文章: (1)Gradle_04_解决多项目同级依赖时找不到符号的异常 (2)https://www.cnblogs.com/shirui ...

  4. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性

    通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...

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

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

  6. java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...

    项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...

  7. java静态类如何赋值_Java如何读取配置文件并赋值静态变量

    应用场景 项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为nul ...

  8. java的相对路径用法_java项目中的绝对路径和相对路径用法说明

    java项目中的绝对路径和相对路径用法说明 绝对路径:不可改变的路径 本地绝对路径:增加盘符的路径(e:/test/test.html) 网络绝对路径:增加协议,IP地址,端口号的路径(http:// ...

  9. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

最新文章

  1. 病毒木马查杀实战第019篇:病毒特征码查杀之编程实现
  2. Eclipse中安装插件时提示:No repository found containing: osgi.bundle,org.eclipse.emf,2.8.0.v20180706-1146
  3. Android安全教程(1)---Fiddler简易使用教程之配置环境
  4. 基于.NetCore结合docker-compose实践Gitlab-CI/CD 排坑指南
  5. go语言扫描四位数可用域名
  6. 总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程
  7. 【离散数学】幂集的求解
  8. 【华为云实战开发】12.如何在云端快速开展Swagger接口测试
  9. 测试思想-测试总结 缺陷分析与统计浅析
  10. 怎样将Redis以本地服务方式进行启动?
  11. activeMQ 的kahadb存储引擎分析
  12. php实现简单的框架,PHP 实现简单的 MVC 框架
  13. 读完两遍《STL源码剖析》后,我发现了一些辛秘
  14. 供水管道泄漏检测用水听器侦听系统的原因
  15. 寒假第二周学习总结与反思
  16. js使用微信分享功能
  17. 属于计算机语言基本元素是,高级编程语言的共有的一些基本要素
  18. 数字藏品|NFT整个行业的调研报告 数字藏品有价值吗 数字藏品是什么 百度数字藏品
  19. 青春是什么样的味道?
  20. FDA首次批准iPad成为医学影像诊断辅助产品

热门文章

  1. 视觉SLAM——ORB-SLAM2运行tum数据集,kitti数据集,euroc数据集
  2. 视觉SLAM——D435i运行ORB-SLAM2-RGB-D(依赖ros版)
  3. fastjson反序列化漏洞_【漏洞复现】fastjson反序列化漏洞
  4. python实现装饰器_python装饰器的实现
  5. mysql hang分析_mysql hang
  6. C++安全方向:(二)2.1 base16编解码原理讲解
  7. 解封装(五):AVStream和AVCodecParameters分析
  8. docker springboot读取配置文件_Docker从入门到掉坑(三):容器太多,操作好麻烦
  9. git checkoutbranch 回退到某个版本进行修改
  10. html 复选按钮(input checkbox)