打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PropertiesConfiguration学习与使用

https://blog.csdn.net/qq_34531925/article/details/81538652

前言:

假设有这样的需求,需要按照文件的顺序读取Properties文件,这时该怎么做。直接使用java.util.Properties是做不到的,因为Properties继承自Hashtable;随便搜索一下就可以得到一个,继承Properties,自己维护一个LinkedHashSet的解法。这个方法当然可以解,但再次假如基础上我还要保证我修改Properties调用save之后的文件保持顺序,就比较麻烦了,更别说我还想加些注释。自己实现这么个东西想想就头大,好在Apache已经帮我们做好了,这就是PropertiesConfiguration,人活着,还是要抱紧大腿。
先说好,我用的是org.apache.commons.configuration 1.10,而不是2.1.1。2.1.1的初始化太长看着难受。

一、Properties能做的它都能做

    //先看看Properties    String propertiesFileName="a.properties";    Properties props = new Properties();    props.load(new FileInputStream(propertiesFileName));    String value =props.getProperties("key");    //然后是PropertiesConfiguration    PropertiesConfiguration propsConfig=new PropertiesConfiguration();    //默认的编码格式是ISO-8859-1,所以才在读取文件之前先设置了编码格式    propsConfig.setEncoding("UTF-8")    propsConfig.load(propertiesFileName);    String strValue=propsConfig.getString("key");    String longValue=propsConfig.getLong("longKey");    String[] strArray=propsConfig.getStringArray(arrayKey);    //值得一提的是。propsConfig的默认分割符是',',换句话说,如果值使用','分割,使用getString去取的话是会抛出异常的,因为这被认为是个数组,分割符可以使用setListDelimiter设置。    ...    props.setProperty(someKey,someValue);    props.clearProperty(someKey);

PropertiesConfig有所有基本类型的get方法,以及删除属性的clearProperty方法。load,save方法没什么区别就没写。。

二、除此之外还有什么?

2.1、遍历

Properties本身就是个Hashtable,使用遍历map的方法就好了。而PropertiesConfiguration并没有把它是用什么实现的暴露出来,而是提供了getKeys方法,返回迭代器,重要的是这个迭代器是按照文件顺序读取的。这就让人非常开心了。顺便一提,调用save方法保存的时候并不会改变文件顺序。

2.2、同步

假设使用Properties,我希望内存中的Properties对象的数据与文件总是保持同步,那我只能写个定时器,检查文件是否更新过,是否需要重新读取。但PropertiesConfiguration就不用,它提供了setReloadingStrategy方法,可以设置重加载策略,常见的有

 propsConfig.setReloadingStrategy(new FileChangedReloadingStrategy());

当文件被修改时重新加载。除此之外还有。

 propsConfig.setAutoSave(true);

修改属性之后自动保存。

2.3、一些让人快乐的功能

在PropertiesConfiguration中,我还发现了个好东西,叫做PropertiesConfigurationLayout,可以用get方法获取它。它能干什么呢?最让我感兴趣的是,它可以读写注释。注释是一个可以让几个月之后的自己变得开心的东西,所以何乐而不为呢。

    PropertiesConfigurationLayout layout=propsConfig.getLayout();    String comment =layout.getComment();    layout.setComment("some comment");

除此之外PropertiesConfigurationLayout还有很多方法,我没都看,取决于是否需要了。

三、总结

我要告别java.util.Properties。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Apache Commons-configuration 学习笔记
java Properties的读,写操作
java 三种读取配置文件的方式
怎么读取war包中的properties文件,不使用web请求上下文的方式实现
java读取property文件(2014-07-04)
关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服