直接使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的。
但是,我想要的,或者开发需求是要求,怎么读进来,怎么写出去。按顺序读,还得按顺序写。
下面就示范怎么按顺序读properties文件,以及还得按原来的顺序写properties文件。
package com.lxk.propertyFileTest;
import java.util.*;
/**
* Created by lxk on 2017/5/2
*/
public class OrderedProperties extends Properties {
private static final long serialVersionUID = -4627607243846121965L;
/**
* 因为LinkedHashSet有序,所以,key在调用put()的时候,存放到这里也就有序。
*/
private final LinkedHashSet keys = new LinkedHashSet<>();
@Override
public Enumeration keys() {
return Collections.enumeration(keys);
}
/**
* 在put的时候,只是把key有序的存到{@link OrderedProperties#keys}
* 取值的时候,根据有序的keys,可以有序的取出所有value
* 依然调用父类的put方法,也就是key value 键值对还是存在hashTable里.
* 只是现在多了个存key的属性{@link OrderedProperties#keys}
*/
@Override
public Object put(Object key, Object value) {
keys.add(key);
return super.put(key, value);
}
/**
* 因为复写了这个方法,在(方式一)的时候,才输出有序。
* {@link MainOrder#printProp}
*/
@Override
public Set stringPropertyNames() {
Set set = new LinkedHashSet<>();
for (Object key : this.keys) {
set.add((String) key);
}
return set;
}
/**
* 因为复写了这个方法,