问题描述:
我原本是用的如下方式:(也是最常见的方式)
InputStream is = PropertyFileUtil.class.getClassLoader()
.getResourceAsStream("Config.properties");
如果我改动了Config.properties文件,重新调用上面的代码去获取输入流,则读到的内容还是改动之前的内容。也就是说,上面这种方式对于Config.properties的改动是无效的,
原因是:上面这种方法自带了缓存。如果希望能改变Config.properties时能够重新加载,则可以使用下面的方法:
InputStream is = null;
String fileUrl = ReportConfig.class.getClassLoader()
.getResource("Config.properties").getPath();
fileUrl = fileUrl.replaceAll("%20", " ");
is = new BufferedInputStream(new FileInputStream(fileUrl));
这个方法是按实际路径 用FileInputStream去读取 的,所以能够读取到改动后的Config.properties。
PS:另外我发现一点, 在Websphere服务器上,替换了Config.properties文件,然后再重新读取配置内容,依然获得的是替换之前的内容 ,这就不是缓存的问题了,而是Websphere隐藏了最原始那份Config.properties文件,我们替换时不能将这个原始的版本替换掉(我们替换掉的实际上是只是一个副本)。貌似在Websphere上替换class和properties文件都需要重启服务器才会生效。我哪天把properties文件的后缀伪装成.jsp再试试………
以上所述就是小编给大家介绍的《properties文件改变不生效的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- @Transactional事务生效问题
- UI抗锯齿不生效原因
- View.requestLayout() 不生效的问题
- C# Redis 过期机制不生效问题
- DrawMeshInstanced在Unity2018上不生效
- 通过 Chrome Console 填写表单内容未生效
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。