使用apache common configuration读取配置文件或修改配置文件

最近在做项目的时候,需要在页面上显示系统的配置信息并且允许用户通过WEB交互方式修改配置文件。
刚刚开始想采用数据库,但是这样子不太好,就一个配置信息也写进数据库,写入数据库也就一条记录而已, 有点浪费了。
后来,决定采用xml来记录这个配置文件。在网上无意间发现,原来apache的common项目下面有一个子项目叫configuration, 可以读取properties,xml等文件,并且还提供了修改,新建配置文件等功能。
可能用多了apache,总觉得apache的东西就是好,也懒得去通过dom或sax来做这一方面的工作了,解析也是痛苦的事情,对于我这个经验不丰富的人来讲。最后决定采用它。
上apache,下载了一个最新版本1.1。
注意:configuration里面使用了common collections新的类,最新版本是3.1,所以还需要更新一下工程的库

项目采用的是XML文件的配置,部分XML配置大概如下:
 <?xml version="1.0" encoding="UTF-8"?>
<mung-frog-config>
    <mail>
      <mailhost>mail.suneca.com</mailhost>
      <mailuser>admin</mailuser>
      <mailpassword>123456</mailpassword>
      <mailsubject>suneca mung frog code generation project</mailsubject>
      <mailtemplate>/WEB-INF/pages/common/mail_template.html</mailtemplate>           
    </mail>
</mung-frog-config>













读取配置文件的代码如下:

 //新建一个xml configuration类
XMLConfiguration config = new XMLConfiguration();
//得到当前配置文件的路径
String path = new File("resource/mungfrog.cfg.xml").getAbsolutePath();
File file = new File(path);

config.setFile(file);
config.load();

System.out.println(config.getProperty("mail.mailhost"));
System.out.println(config.getProperty("mail.mailuser"));
System.out.println(config.getProperty("mail.mailpassword"));

保存配置文件,假设现在需要增加一个抄送人的配置,代码片断:

 //新建一个xml configuration类
XMLConfiguration config = new XMLConfiguration();
//得到当前配置文件的路径
String path = new File("resource/mungfrog.cfg.xml").getAbsolutePath();
File file = new File(path);

config.setFile(file);
config.load();

config.addProperty("mail.mailcc","yuzhechen@msn.com");
config.save();

生成的配置件:

 <?xml version="1.0" encoding="UTF-8"?>
<mung-frog-config>
    <mail>
      <mailhost>mail.suneca.com</mailhost>
      <mailuser>admin</mailuser>
      <mailpassword>123456</mailpassword>
      <mailsubject>suneca mung frog code generation project</mailsubject>
      <mailtemplate>/WEB-INF/pages/common/mail_template.html</mailtemplate>           
      <mailcc>yuzhechen@msn.com</mailcc>
    </mail>
</mung-frog-config>

注意,XMLConfiguration当中有一个方法是addProperty(String str,Object obj);
如果增加配置信息是采用这个方法,不管你当前配置文件当中有没有这一项配置,都会增加这一项。

在使用这个工具的时候发现一个问题,如果XMLConfiguration不是通过一个File来load,在保存配置文件的时候会报一个空指针的异常
例如:
 ClassLoader loader = MungFrogConfig.class.getClassLoader();
InputStream is = loader.getResourceAsStream("mungfrog.cfg.xml");
config.load(is);
config.addProperty("mail.mailcc","yuzhechen@msn.com");
config.save();

这此会报一个空指针的异常,因为file找不到,为什么会有这样的问题呢?我也不知道,问apache吧!可能是BUG吧,我也只能这么说。

还有,如果你的开发工具用的是JBUILDER,读取没有问题,但是,保存配置的时候,它都会在project home生成一个新的配置文件,郁闷,
为什么会有这样的问题呢?原因就是jbuilder认为project home就是工程的根路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值