首页 > 代码库 > 配置文件.properties的使用

配置文件.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 = http://www.mamicode.com/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  


来自为知笔记(Wiz)


配置文件.properties的使用