Apache Commons-configuration 学习笔记
1 如果要使用configuration这个包,首先要保证使用JDK1.2以上,还要引入如下jar包
2 commons-configuration最新的版本是1.5,最主要的作用是读取资源文件,每一种文件格式都有一个对应的类,如下
3 上面已经对它做了基本的介绍,下面看看这个包怎么用吧
比如我们要读一个properties文件:在classpath下面建立目录te,之后在te下面建立
test.properties
java:
首先要把这个文件读到程序中,我们可以用上面的类,所有的读取文件的类都 继承自AbstractConfiguration类,
而这个类实现了Configuration接口,如果我们只有比较简单的需求,那么可以直接向上转型为Configuration类型,如果向上
转型为AbstractConfiguration类,那么可以做一些配置工作。
比如刚刚看到的 keys=cn,com,org,uk,edu,jp,hk这个例子中如果是keys=cn/com/org/uk/edu/jp/hk
那么如果还按照原来的方式读取,读到的将是"cn/com/org/uk/edu/jp/hk"这个字符串,所以要先改变分割符之后在读
即
如果你看它的源码,你会在 AbstractConfiguration这个类中找到:
commons-configuration-1.5.jar
commons-lang-2.3.jar
commons-collections-3.2.jar
commons-logging-1.1.1.jar
作用:1)提供统一管理各种配置文件的读写API
2)简化了读写流程
3)提供获取数据基本类型自动强转
基本使用:
操作properties文件
//读取
Configuration configuration = new PropertiesConfiguration("config.properties");
String name = configuration.getString("config.name");
int age = configuration.getInt("config.age");
//获取逗号分割的列表
String[] fireds = configuration.getStringArray("config.firends"); //config.firends = liguang,xuwenjian用逗号分割
//保存
PropertiesConfiguration configuration = new PropertiesConfiguration("config.properties"); //要使用类PropertiesConfiguration
configuration.setProperty("config.city", "nanjing");
configuration.save();
//保存到指定文件中
configuration.save("configbak.properties");
操作xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<gui-definition>
<colors>
<background>#808080</background>
<text>#000000</text>
<header>#008000</header>
<link normal="#000080" visited="#800080"/>
<default>${colors.header}</default>
</colors>
<rowsPerPage>15</rowsPerPage>
<buttons>
<name>OK,Cancel,Help</name>
</buttons>
<numberFormat pattern="###\,###.##"/>
</gui-definition>
XMLConfiguration config = new XMLConfiguration("tables.xml");
//获取节点值 路径中不包括根节点名
String backColor = config.getString("colors.background");
//获取节点属性值
String linkNormal = config.getString("colors.link[@normal]");
//获取列表
List buttons = config.getList("buttons.name");
//获取逗号分割的列表
String[] fireds = config.getStringArray("config.firends"); //config.firends = liguang,xuwenjian用逗号分割
//tables.table(1).fields.field(2).name 从0开始计数
1 如果要使用configuration这个包,首先要保证使用JDK1.2以上,还要引入如下jar包
- commons-beanutils
- commons-lang
- commons-logging
- commons-collections
- commons-digester
- commons-codec
- commons-jxpath
2 commons-configuration最新的版本是1.5,最主要的作用是读取资源文件,每一种文件格式都有一个对应的类,如下
- properties文件--PropertiesConfiguration类
- xml文件--XMLConfiguration
- .ini文件--INIConfiguration
- .plist文件--PropertyListConfiguration
- 还可以从JNDI中读取properties--JNDIConfiguration
- 当然还可以使用system的properties--SystemConfiguration
- 等等...
3 上面已经对它做了基本的介绍,下面看看这个包怎么用吧
比如我们要读一个properties文件:在classpath下面建立目录te,之后在te下面建立
test.properties
- ip=127.0.0.1
- port=8080
- id=111
- application.name = Killer App
- application.version = 1.6.2
- application.title = ${application.name} ${application.version}
- keys=cn,com,org,uk,edu,jp,hk
java:
- //注意路径默认指向的是classpath的根目录
- Configuration config = new PropertiesConfiguration("te/test.properties");
- String ip=config.getString("ip");
- int port=config.getInt("port");
- String title=config.getString("application.title");
- //再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中
- //你就可以为它设置默认值。比如下面这个例子就会在test.properties这个文件中找id的值,如果找不到就会给id设置值为123
- //这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。
- Integer id=config.getInteger("id", new Integer(123));
- //如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk
- //可以实用下面的方式读取:
- String[] keys1=config.getStringArray("keys");
- List keys2=config.getList("keys");
而这个类实现了Configuration接口,如果我们只有比较简单的需求,那么可以直接向上转型为Configuration类型,如果向上
转型为AbstractConfiguration类,那么可以做一些配置工作。
比如刚刚看到的 keys=cn,com,org,uk,edu,jp,hk这个例子中如果是keys=cn/com/org/uk/edu/jp/hk
那么如果还按照原来的方式读取,读到的将是"cn/com/org/uk/edu/jp/hk"这个字符串,所以要先改变分割符之后在读
即
- AbstractConfiguration.setDefaultListDelimiter('/');
- Configuration config = new PropertiesConfiguration("te/Vasp.properties");
- String[] keys=config.getStringArray("keys");
- List key2=config.getList("keys");
- private static char defaultListDelimiter = ',';
====================================================================================================================
Demo two
必须包:commons-configuration-1.5.jar
commons-lang-2.3.jar
commons-collections-3.2.jar
commons-logging-1.1.1.jar
作用:1)提供统一管理各种配置文件的读写API
2)简化了读写流程
3)提供获取数据基本类型自动强转
基本使用:
操作properties文件
//读取
Configuration configuration = new PropertiesConfiguration("config.properties");
String name = configuration.getString("config.name");
int age = configuration.getInt("config.age");
//获取逗号分割的列表
String[] fireds = configuration.getStringArray("config.firends"); //config.firends = liguang,xuwenjian用逗号分割
//保存
PropertiesConfiguration configuration = new PropertiesConfiguration("config.properties"); //要使用类PropertiesConfiguration
configuration.setProperty("config.city", "nanjing");
configuration.save();
//保存到指定文件中
configuration.save("configbak.properties");
操作xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<gui-definition>
<colors>
<background>#808080</background>
<text>#000000</text>
<header>#008000</header>
<link normal="#000080" visited="#800080"/>
<default>${colors.header}</default>
</colors>
<rowsPerPage>15</rowsPerPage>
<buttons>
<name>OK,Cancel,Help</name>
</buttons>
<numberFormat pattern="###\,###.##"/>
</gui-definition>
XMLConfiguration config = new XMLConfiguration("tables.xml");
//获取节点值 路径中不包括根节点名
String backColor = config.getString("colors.background");
//获取节点属性值
String linkNormal = config.getString("colors.link[@normal]");
//获取列表
List buttons = config.getList("buttons.name");
//获取逗号分割的列表
String[] fireds = config.getStringArray("config.firends"); //config.firends = liguang,xuwenjian用逗号分割
//tables.table(1).fields.field(2).name 从0开始计数