2012-03-29 53 views
3

任何人请帮我重新加载属性文件。 我有这样如何重新加载属性文件在java

Properties prop = new Properties(); 
InputStream trackerFileStream = 
    LoadProperty.class.getClassLoader().getResourceAsStream("sample.properties"); 
prop.load(trackerFileStream); 

代码加载性能,通过类加载器文件后,我修改属性文件。 我无法在同一个程序执行中获得最新的修改。

任何人都可以请我建议如何重新加载属性文件,而无需重新执行程序。

+0

是否在修改属性文件后执行上面的代码? – oers 2012-03-29 11:39:25

回答

0

你正确关闭/冲洗你的流吗?为什么使用classloader来访问文件?如果该文件是外部文件,则应通过正常的FileInputStream访问该文件

+0

但在我的情况下,我无法指定文件的确切位置。这就是为什么我使用类加载器 – 2012-03-29 11:37:14

+0

在生产中,实际上您的应用程序打包为.jar文件,并且无法修改它的运行时。文件需要被读取和修改,运行时应该被放置到指定的绝对路径或相对路径。 – jabal 2012-03-29 11:41:47

+0

感谢jabal,在关闭InputStream后它是工作文件(即能够读取属性文件的最新值)。 – 2012-03-29 11:43:01

0

如果要更新,您需要检查资源的时间并重新加载属性。

这是一个问题,您正在从classpath加载属性。如果您使用文件系统,您可以检查文件的最后修改的属性并决定是否重新加载它。在java 7中,你可以注册监听器,当文件被修改时它会回调你。加载资源时无法执行此操作。

但是你可以做得更好。使用来自apache的configuration包。它已经实现了重新加载逻辑,因此您可以针对实际映射到资源的“配置”工作,并确保您始终获得更新的数据。