配置文件.properties的使用

Posted nobug的世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置文件.properties的使用相关的知识,希望对你有一定的参考价值。

.properties是以键值对的形式保存数据,比文件保存更方便读取,而且不用修改源代码,不用重新编译源文件。
多用于保存配置数据,如jndi,cookie属性,上传下载目录等等。
另外,保存特殊化的内容十分有用,比如河北代码需要前台显示“河北”字样,云南代码需要显示“云南”字样,用properties就不用修改源码了。只需要河北写一个配置文件,云南写一个配置文件。
1、写好配置文件,在buildingpath中设置为源。
2、写读取配置文件的静态函数。(如ConfigConstants.java)
package com.wondersgroup.core.constant;

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

import org.apache.commons.lang.StringUtils;

public class ConfigConstants {
    /** 单体实例 */
    private static ConfigConstants instance;

    /** 配置属性 */
    private Map<String, String> config = new HashMap<String, String>();

    /**
     * 私有构造器
     */
    private ConfigConstants() {
    }

    /**
     * @return 返回 instance。
     */
    public static ConfigConstants getInstance() {
        if (instance == null) {
            instance = new ConfigConstants();
        }
        return instance;
    }

    /**
     * 获取配置属性
     * 
     * @param key
     * @return
     */
    public String get(String key) {
        return config.get(key);
    }

    /**
     * 初始化配置属性
     * 
     * @throws IOException
     */
    public void init() throws IOException {
        // 读取默认配置文件
        this.read("/config.properties");

        // 扩展配置文件路径配置项名称
        String ext = "config.ext";

        // 支持多重继承,循环读取配置
        while (StringUtils.isNotBlank(this.config.get(ext))) {
            // 读取扩展配置文件路径
            String path = this.config.get(ext);

            // 清除配置属性中已读取的扩展配置文件路径
            this.config.remove(ext);

            // 读取扩展配置文件
            this.read(path);
        }
    }

    /**
     * 读取配置文件内容并将配置加载至内存
     * 
     * @param conf 配置文件路径
     * @throws IOException
     */
    private void read(String conf) throws IOException {
        if (StringUtils.isNotBlank(conf)) {
            InputStream is = null;
            Properties props = new Properties();

            try {
                is = ConfigConstants.class.getResourceAsStream(conf);
                BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
                props.load(br);
                Enumeration<?> propKeys = props.propertyNames();
                while (propKeys.hasMoreElements()) {
                    String propName = (String) propKeys.nextElement();
                    String propValue = props.getProperty(propName);

                    this.config.put(propName, propValue);
                }
            } finally {
                if (is != null) {
                    is.close();
                }
            }
        }
    }
}
3、这时配置文件中的内容已经以map形式放在内存池中,之后程序中可以用ConfigConstants.getInstance().get("key")来取得相应value值。
附注:扩展配置文件的使用,在properties中有此键值“config.ext”(在ConfigConstants.java中)即可,比如:
config.ext /config-yn.properties  




以上是关于配置文件.properties的使用的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot:配置文件的作用配置文件的格式properties配置文件yml配置文件

springboot application.properties 写多个配置文件怎么写

springboot application.properties 写多个配置文件怎么写

配置文件.properties的使用

java读取properties配置文件总结

properties配置文件