这是一个使用Apache Commons Configuration对properties、xml配置文件的【增删改查】及动态加载的案例,Configuration是入门的良品,温馨提示:注意configuration包的依赖包的导入(源码里有哦)!支持源码下载哦!
package com.athl.configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
public class ConfigurationDemo {
//一、读写properties类型的配置文件
//默认读取src根目录下
//public static final String propFileName = "cfg.properties";
public static final String propFileName = "com/athl/configuration/cfg.properties";
public static PropertiesConfiguration cfg1 = null;
static {
try {
cfg1 = new PropertiesConfiguration(propFileName);
} catch (Exception e) {
e.printStackTrace();
}
// 当文件的内容发生改变时,配置对象也会刷新
cfg1.setReloadingStrategy(new FileChangedReloadingStrategy());
}
//这里以String为例其它类型数据类似
/*获取String*/
public static String getStringValue(String key) {
return cfg1.getString(key);
}
/*修改String配置*/
public static void setStringValue(String key,String value){
cfg1.setProperty(key, value);
try {
cfg1.save();
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
/*添加String配置*/
public static void addStringValue(String key,String value){
cfg1.addProperty(key, value);
try {
cfg1.save();
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
/*删除String配置*/
public static void delStringValue(String key){
cfg1.clearProperty(key);
try {
cfg1.save();
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
//二、读写xml类型的配置文件
public static final String xmlFileName = "cfg.xml";
public static XMLConfiguration cfg2 = null;
static {
try {
cfg2 = new XMLConfiguration(xmlFileName);
} catch (ConfigurationException e) {
e.printStackTrace();
}
// 配置文件 发生变化就重新加载
cfg2.setReloadingStrategy(new FileChangedReloadingStrategy());
}
//获取
public static String getXmlStringValue(String key) {
return cfg2.getString(key);
}
//添加
public static void addXmlStringValue(String key,String value){
cfg2.addProperty(key, value);
try {
cfg2.save();
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
//其它与读写properties类型的配置文件类似,不再演示
//测试
public static void main(String[] args) {
/*测试读写properties类型的配置文件*/
//获取
System.out.println("name:" + ConfigurationDemo.getStringValue("name"));
//修改
//ConfigurationDemo.setStringValue("name", "oracl");
ConfigurationDemo.setStringValue("name", "mysql");
//获取修改后的
System.out.println("name:" + ConfigurationDemo.getStringValue("name"));
//添加
ConfigurationDemo.addStringValue("newName", "newValue");
//获取添加后的
System.out.println("newName:"+ConfigurationDemo.getStringValue("newName"));
//删除
ConfigurationDemo.delStringValue("newName");
//获取删除后的
System.out.println("newName:"+ConfigurationDemo.getStringValue("newName"));
/*测试读写xml类型的配置文件*/
//获取
System.out.println("jdbcUrl="+ConfigurationDemo.getXmlStringValue("database.jdbcUrl"));
//添加
ConfigurationDemo.addXmlStringValue("database.newName", "newValue");
//获取添加后的
System.out.println("newName:"+ConfigurationDemo.getXmlStringValue("database.newName"));
}
}