读取properties文件报错的四种方式

网上的一些方法 

1.方法一 

用类加载器

InputStream fis =TestProperties.class.getClassLoader().getResourceAsStream(“*.properties”)

2.方法二(示例TestProperties和init.properties在同一目录下) 

InputStream fis =TestProperties.class.getResourceAsStream(“*.properties”)

如果不在同一目录下,用../格式或将pro文件放在classpath下,用/*.properties也行,/代表classpath。

3.方法三,对于Web工程也可以这样。 
先获取ServletContext,然后 

InputStream in=context.getResourceAsStream(“/WEB-INF/classes/init.properties”);

这个没试过。

4.方法四

 用new FileInputStream("src/main/resources/*.properties");

FileInputStream("")里的结构是从项目的根文件夹开始的

当在web项目里时又发生错误了,于是我写了个

看看这个路径是从哪里开始,结果为

C:\Tomcat\apache-tomcat-8.5.20\bin\.

是在tomcat的bin里,所以要写“../webapps/项目名/WEB-INF/classes/*.properties”

所以说,当作为webservice部署到tomcat里时,若想使用当前目录,最好先使用System.out.println(new File(".").getAbsolutePath());查看一下当前目录是什么,因为他不一定是你的.class文件存放的目录


但是!!!

由于我的项目时用IDEA建了个maven管理的web项目(在D盘),然后用的本地的tomcat(在C盘),而打包发布的时候默认在D盘的target文件夹里边,所以System.out.println(new File(".").getAbsolutePath());结果在C盘tomcat的bin里没错,但是实际文件在D盘,还是报错。。。。

终极解决方案:在controller到service接口的方法里都加上HttpServletRequest request这个参数,在方法里用

request.getSession().getServletContext().getRealPath("/WEB-INF/classes/rewardSetting.properties");

来获得绝对路径从而解决错误!!!

终于解决了,哭一会

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值