码迷,mamicode.com
首页 > 编程语言 > 详细

Java实现动态加载读取properties文件

时间:2016-06-05 18:24:10      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

问题: 当我们使用如下语句加载.properties时:

 

ClassLoader classLoader = this.getClass().getClassLoader();
Properties prop = new Properties();
prop.load(classLoader.getResourceAsStream("/Application.properties"));

 

  

会发现修改了.properties后,即使重新执行,读入的仍为修改前的参数。此问题的原因在于ClassLoader.getResourceAsStream读入后,会将.properties保存在缓存中,重新执行时会从缓存中读取,而不是再次读取.properties文件。

解决

 

Properties prop = new Properties();
InputStream is = new FileInputStream(绝对路径);
prop.load(is);  

此时,FileInputStream不会将.properties保存在缓存中,即可以解决此问题。但另外让人困惑的 一个问题会产生,即绝对路径,会导致程序的通用性不好。这个问题是由于ClassLoader.getResourceAsStream是直接寻找 classes下的文件,FileInputStream则需要用完整的绝对路径。

完美解决

 

Properties prop = new Properties();
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
InputStream is = new FileInputStream(path + "/VoucherManagement.properties");

 

  

 

此时已无需给出.properties绝对路径,实现动态加载。

Java实现动态加载读取properties文件

标签:

原文地址:http://www.cnblogs.com/xiohao/p/5561094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!