Properties文件解析及其工具化

Properties文件解析及其工具化

Properties文件解析工具制作

XML文件能够表示和存储层次结构的数据,功能的确很强大。但是,很多时候,我们编程所需要的数据都是键值对形式的扁平数据,对于这样的数据,使用XML表达和存储,就有些大材小用了。
对于键值对形式的数据,用Properties类型的文档来处理是更合适的。Properties文档相对于XML文档要简单很多,直接就是由键值对组成的。如下test.properties文档的具体内容。
在这里插入图片描述
对于properties文档数据的解析处理,HashMap是理想的数据结构(类),将properties文档中的键值对保存在HashMap中,并提供根据键取值的方法;将properties文档中的键值对映射到内存中,也可以提高程序效率。

package com.parse.properties.core;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class PropertiesTool {
	private static final Map<String, String> propertiesmap;//需要一份就够了
	
	static {
		propertiesmap=new HashMap<>();
	}
	
	public static void ReadConfigProperties(String PropertiesPath) throws ConfigPropertiesNotExistException, IOException {//使用工具者需要提供properties文档的路径
		InputStream iStream=PropertiesTool.class.getResourceAsStream(PropertiesPath);
		if(iStream==null) {
			throw new ConfigPropertiesNotExistException(" 打开配置文件 "+PropertiesPath+" 失败 ");//这是新定义的一个异常,这里只是指简单的继承Exception类
		}
		
		Properties properties=new Properties();
		properties.load(iStream);//加载文件
		
		Enumeration<Object> kesSet=properties.keys();//取得properties文件的键集合
		while(kesSet.hasMoreElements()) {
			String key=(String) kesSet.nextElement();
			String value=properties.getProperty(key);
			propertiesmap.put(key, value);//将映射关系保存在Map里面
			}
	}
	
	public static String getvalue(String key) {//提供给外部使用者根据键取得值的方法
		return propertiesmap.get(key);
	}

}

测试代码及结果截图
package com.parse.properties.test;

import java.io.IOException;

import com.parse.properties.core.ConfigPropertiesNotExistException;
import com.parse.properties.core.PropertiesTool;

public class Test {

	public static void main(String[] args) {
		try {
			PropertiesTool.ReadConfigProperties("/test.properties");
			System.out.println(PropertiesTool.getvalue("name"));
			System.out.println(PropertiesTool.getvalue("sex"));
			System.out.println(PropertiesTool.getvalue("age"));
		} catch (ConfigPropertiesNotExistException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

在这里插入图片描述

总结

1.对于键值对形式的数据,选择properties文件比XML文件更合理一些。
2.properties文件解析工具可以用在端口号,ip地址,数据库连接等,使得不必重复地去修改代码,只需要修改配置的properties文件就好。
关于使用fastjson来序列化对象,并用properties读写的一些实现:可以点击链接,查找PropertiesEditor的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值