我试图探索阿帕奇公地配置动态加载属性文件,并在文件中做修改并保存修改后的变化。属性文件没有反映使用Apache Commons Configuration也
我写了一个相同的演示代码。
代码段
package ABC;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
public class Prop {
public static void main(String[] args)
{
try {
URL propertiesURL = Prop.class.getResource("/d1.properties");
if (propertiesURL == null) {
System.out.println("null");
}
String absolutePath=propertiesURL.getPath();
PropertiesConfiguration pc = new PropertiesConfiguration(absolutePath);
pc.setReloadingStrategy(new FileChangedReloadingStrategy());
String s=(String)pc.getProperty("key_account_sales");
System.out.println("s is " + s);
pc.setAutoSave(true);
pc.setProperty("key_account_sales", "Dummy");
pc.save();
System.out.println("Modified as well");
String sa=(String)pc.getProperty("key_account_sales");
System.out.println("s is " + sa);
}catch(ConfigurationException ce)
{
ce.printStackTrace();
}
}
}
虽然当我多次运行的代码,该属性的更新值被正常显示,但更改不会在属性文件中看到。
我试图刷新整个工作区和项目,但仍然属性文件显示前一个条目,而该代码显示在控制台中的更新项。
为什么我的财产文件没有得到更新?
嗯,我注意到我的IDE工作区的bin 目录中有一个新名称相同的文件。这个新文件包含所需的 更改。
但是我仍然希望旧文件应该更新为新的 值,而不是创建一个新文件,它应该更新旧 文件本身。
我的属性文件位于Web应用程序包内说
DEM1
由
名称Prop1.prop
我想读在另一类这个属性文件说
Reading.java
位于另一个包内
DEM2
,做此相同的变化属性文件并将其显示给其他用户。它是一个部署在应用程序服务器上的Web应用程序。
即使使用简单文件(主要功能)的绝对路径它不反映在同一个文件的变化,但在新的文件更新之后。
我做一个非常轻微的错误,但能有人帮。
使用绝对路径,我不能做出正常的主要方法也是在同一属性文件的更改。请建议。
创建bin目录中的新文件而不是更新src文件夹中的同一个文件 。
+1的复制/粘贴例子 – 2013-05-09 09:47:06