java读取配置文件

时间:2022-03-15 18:45:03

一、针对不会经常变化的文件

    通过*.class.getClassLoader().getResourceAsStream读取文件之后,会把文件存在内存中缓存,后来每一次读取都是读取内存中的内容了,而不是再次读取,同理ResourceBundle.getBundle("resource/config")。

    eg:

    1、 public static Properties newInstance() {

        InputStream is = PropertiesUtil.class.getClassLoader().getResourceAsStream("config.properties");
        Properties p = new Properties();
        try {
            p.load(is);
        } catch (IOException e) {
            logger.error("读取配置文件出错", e);
        }
        return p;

    }

    //获取key

     PropertiesUtil.newInstance().getProperty("key");

2、private static final ResourceBundle config = ResourceBundle.getBundle("config");
    public static final String getValue(String key) {
        return config.getString(key);

    }

二、需要实时加载变化文件

    -- 方法1、改变一下文件的输入流获取方式

    Properties prop = new Properties();
    String path = CommonUtils.class.getClassLoader().getResource("config.properties").getPath();
    InputStream is = new FileInputStream(path);
    prop.load(is);

    -- 方法2
    //获取ClassPath的绝对URI路径
    String dirPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
    //获取config.properties文件,针对在classPath最外层情况
    File file = new File(dirPath,"config.properties");
     props = new Properties();
     InputStream fis = new FileInputStream(file);
     props.load(fis);