Java读取配置文件,工具类

maven工程下读取src/main/resources下的配置文件:

1.所有类和资源文件编译后位于classpath路径(targer/classes)

2.Class.getClassLoader() 返回该类的类加载器

3.ClassLoader.getSystemResourceAsStream() 从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源

4.Properties.load(InputStream inStream) 从输入流中读取属性列表(键和元素对)

 
ClassLoader classLoader = Test.class.getClassLoader();  
URL resource = classLoader.getResource("test.xml");  
String path = resource.getPath();  
System.out.println(path);  
InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml");  
Properties properties = new Properties();
properties.load(resourceAsStream);

附:配置文件读取工具类

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PropertiesUtil {

    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
    private static Map<String, PropertiesUtil> propsMap;
    Properties properties;

    public static synchronized PropertiesUtil getInstance(String propName) {
        PropertiesUtil instance = null;
        if (propsMap == null) {
            propsMap = new HashMap<String, PropertiesUtil>();
        }
        instance = propsMap.get(propName);
        if (instance == null) {
            instance = new PropertiesUtil(propName);
            propsMap.put(propName, instance);
        }
        return instance;
    }

    private PropertiesUtil(String propName) {
        ClassLoader classLoader = PropertiesUtil.class.getClassLoader();
        InputStream inStream = classLoader.getResourceAsStream(propName);
        properties = new Properties();
        try {
            properties.load(inStream);
        } catch (IOException e) {
            throw new RuntimeException("There's no resource file named [" + propName + "]", e);
        }
    }

    public String getProperty(String key) {
        return properties.getProperty(key);
    }

    public String getProperty(String key, String defaultValue) {
        return properties.getProperty(key, defaultValue);
    }

    public int getInt(String key) {
        return Integer.valueOf(getProperty(key));
    }

    public int getInt(String key, int defaultValue) {
        return getProperty(key) == null ? defaultValue : Integer.valueOf(getProperty(key));
    }

    public long getLong(String key) {
        return Long.valueOf(getProperty(key));
    }

    public long getLong(String key, long defaultValue) {
        return getProperty(key) == null ? defaultValue : Long.valueOf(getProperty(key));
    }

    public boolean getBoolean(String key) {
        return Boolean.parseBoolean(getProperty(key));
    }

    public boolean getBoolean(String key, boolean defaultValue) {
        return getProperty(key) == null ? defaultValue : Boolean.parseBoolean(getProperty(key));
    }

    public Properties getProperties() {
        return properties;
    }

    public static void main(String[] args) {
        PropertiesUtil pUtil = PropertiesUtil.getInstance("otter.properties");
        String reString = pUtil.getProperty("otter.cache.zkhost");
        logger.info(reString);
    }
}

猜你喜欢

转载自www.cnblogs.com/zengzhihua/p/9125910.html