java properties工具类整理

保持顺序的 Java Properties 类

import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

/**
* OrderedProperties
*/
public class OrderedProperties extends Properties {

private static final long serialVersionUID = -4627607243846121965L;

private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();

public Enumeration<Object> keys() {
return Collections.<Object> enumeration(keys);
}

public Object put(Object key, Object value) {
keys.add(key);
return super.put(key, value);
}

public Set<Object> keySet() {
return keys;
}

public Set<String> stringPropertyNames() {
Set<String> set = new LinkedHashSet<String>();

for (Object key : this.keys) {
set.add((String) key);
}

return set;
}
}


根据封装好的OrderedProperties类封装

/**
*
* @author xxh
*
*/
final public class PropertiesFile {

private static Map<String,Map<String,String>> files = new HashMap<String,Map<String,String>>();
private PropertiesFile(){}

/**
* 根据properties文件名把对应的属性值装换成map, 获取属性值直接从map中去对应的key
* @param file
* @return
* @throws ExcelException
*/
public static Map<String,String> properties2Map(String file) throws ExcelException{
Map<String,String> map = files.get(file);
if(map != null)//缓存中的map
return map;
map = new LinkedHashMap<String,String>();
System.err.println("读取配置文件-------------------"+file);
Properties props = null;
try {
props = new OrderedProperties();
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("properties_config/"+file));
} catch (IOException e) {
throw new RuntimeException("类路径properties_config下需要放置["+file+"]文件!", e);
}catch(NullPointerException e){
throw new RuntimeException("类路径properties_config下需要放置["+file+"]文件!", e);
}
for(Object key : props.keySet()){
map.put((String)key, (String)props.get(key));
}
props.clear();
files.put(file, map);
return map;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值