PropertiesParser(properties文件解析)

id = 123
name = 张三
sex = 男
hobby = 打游戏

对于这样的properties文件,对其进行解析

Properties property = new Properties();
            InputStreamReader isr =
                    new InputStreamReader(Class.class.getResourceAsStream
                            ("/stu/aboutproperties/config.properties"),"UTF-8");
            property.load(isr);
            String name = (String) property.get("name");
            String id = property.getProperty("id");

采用input streamReader而不是inputstream的原因是这样能解析出中文,避免中文乱码。

接下来我们做一个解析工具
思路:如果我们取一个值,就要解析一次,时间复杂度空间复杂度较高,对于做工具而言,我们直接将这个properties解析成一个hashmap里面存放着key 和对应的value。
第一步准备一个池子
第二步写一个方法解析出来所有的键值对放进map里
第三步写一个方法 根据key从map里得到value

 private static final Map<String, String> keysMap;

    static {
        keysMap = new HashMap<>();
    }

    public PropertiesParser() {
    }

    public void loadProperties(String path, String encodingFormat) {
        try {
            Properties property = new Properties();
            InputStreamReader isr = new InputStreamReader(Class.class.getResourceAsStream(path), encodingFormat);
            property.load(isr);
            Enumeration<Object> keys = property.keys();
            while (keys.hasMoreElements()) {
                String key = (String) keys.nextElement();
                String value = property.getProperty(key);
                keysMap.put(key, value);
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String getValue(String key) {
        return keysMap.get(key);
    }

我们用这个工具再解析下这个文件
代码如下

PropertiesParser parser = new PropertiesParser();
        parser.loadProperties("/stu/aboutproperties/config.properties","UTF-8");
        System.out.println(parser.getValue("name"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张嘉書

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值