从Java应用程序中的.config
文件中读取时遇到了一些麻烦。
我有一个模块,我们称之为实现下一个接口的Configuration_Reader:
接口
int getDelayValue();
int getRepValue();
...
例如,getDelayValue()实现如下:
实施
InputStream fis = new FileInputStream(
new File("").getAbsolutePath()+"/config/config.properties");
props.load(fis);
fis.close();
PropertyConfigurator.configure(props);
...
public int getDelayValue() {
return getIntProperty("delayValue");
}
读取值时没有错误或异常,但我的问题是如果我更新 config 文件中的值并调用getDelayValue()
函数再次,它总是返回我启动应用程序时属性的原始值。所以,它没有更新(我假设它没有再次读取文件),即使调试我可以看到正确调用该函数。
任何提示?提前致谢
答案 0 :(得分:1)
您需要重新加载配置文件以查看更改,即此代码
InputStream fis = new FileInputStream(
new File("").getAbsolutePath()+"/config/config.properties");
props.load(fis);
fis.close();
PropertyConfigurator.configure(props);
配置发生变化后,需要再次运行。
如果您使用的是Java 7,则可以使用WatchService来检测文件是否已更改。
另一种替代方法是每次访问配置值时重新加载配置文件,但如果从多个线程频繁或同时访问该值,我不建议这样做。