properties解析

properties文件是键值对组成的,那如何对这类文件进行读取
首先给出需要解析的properties文件:(键值对也可以用”:“,”空格“表示)
在这里插入图片描述
现在给出一个test类,对上面的properties文件进行解析在这里插入图片描述
在这里我们希望可以做出一个解析properties文件的工具(propertiesParser):


import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Test
{
    public static void main(String[] args)
    {
        String name=propertiesParser("/a.properties", "name");
        System.out.println(name);
    }

    public static String propertiesParser(String filePath, String key)
    {
        Properties property=new Properties();
        InputStream inStream=Test.class.getResourceAsStream(filePath);
        try
        {
            property.load(inStream);
            String value=(String) property.get(key);

            inStream.close();
            return value;
        }
        catch(IOException e)
        {

            e.printStackTrace();
        }
        return null;
    }
}

可以看到输出结果没毛病
在这里插入图片描述
用这种方式取出里面所有的键对应的值,需要把文件不停的打开关闭,对于外存操作速度不可能快的起来,这取决于硬盘的速度。
由于properties文件里都是键值对,可以一次性把所有键值对读到map里面去,相当于一次性读入内存。以后可以用get从map里面读。


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 propertiesParser
{
    private static final Map<String, String> pool;
    static// 只在该类被第一次加载的时候执行,以后再也不执行,害怕每一次构造会给同一个pool赋值,防止数据丢失
    {
        pool=new HashMap<>();// 所有的properties的对象只有一个pool,单例的
    }

    public propertiesParser()
    {

    }

    public static void loadProperties(String filePath)
    {
        InputStream inStream=propertiesParser.class.getResourceAsStream(filePath);
        Properties properties=new Properties();
        try
        {
            properties.load(inStream);
            Enumeration<Object> keys=properties.keys();// 取出所有的键,keys是枚举类型
            /**
             * 遍历keys
             */
            while(keys.hasMoreElements())
            {
                String key=(String) keys.nextElement();
                String value=properties.getProperty(key);
                pool.put(key, value);
            }
        }
        catch(IOException e)
        {

            e.printStackTrace();
        }

    }

    public static String value(String key)
    {
        return pool.get(key);
    }

}

执行一下
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值