从.config文件中读取更新的值

时间:2014-02-25 11:49:31

标签: java file properties

从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()函数再次,它总是返回我启动应用程序时属性的原始值。所以,它没有更新(我假设它没有再次读取文件),即使调试我可以看到正确调用该函数。

任何提示?提前致谢

1 个答案:

答案 0 :(得分:1)

您需要重新加载配置文件以查看更改,即此代码

InputStream fis = new FileInputStream(
new File("").getAbsolutePath()+"/config/config.properties");
props.load(fis);
fis.close();
PropertyConfigurator.configure(props);
配置发生变化后,

需要再次运行。

如果您使用的是Java 7,则可以使用WatchService来检测文件是否已更改。

另一种替代方法是每次访问配置值时重新加载配置文件,但如果从多个线程频繁或同时访问该值,我不建议这样做。