获取配置信息

获取配置信息

先得到绝对路径,再获取流

以下代码通过绝对路径读配置文件来获取配置信息:

package com.javalearn.reflect.path;

import java.io.FileReader;
import java.util.Properties;

public class TestForPath {
    public static void main(String[] args) throws Exception{  // 文件须在src文件夹内,文件内容为className=com.javalearn.reflect.realize.User
        String path = Thread.currentThread().getContextClassLoader().getResource("file1.properties").getPath();  // 获取绝对路径
        FileReader reader = new FileReader(path);  // 读文件
        Properties pro = new Properties();
        pro.load(reader);
        reader.close();
        String className = pro.getProperty("className");  // 获取配置信息
        System.out.println(className);
    }
}

输出结果:

com.javalearn.reflect.realize.User

直接以流的形式返回

以下代码对上面的代码稍作修改,通过流的形式返回文件内容:

package com.javalearn.reflect.path;

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

public class TestForPath {
    public static void main(String[] args) throws Exception{  // 文件须在src文件夹内
        InputStream reader = Thread.currentThread().getContextClassLoader().getResourceAsStream("file1.properties");  // 原来是先从文件名获得绝对路径,然后获取流,现在从文件名直接获得流
        Properties pro = new Properties();
        pro.load(reader);
        reader.close();
        String className = pro.getProperty("className");  // 获取配置信息
        System.out.println(className);
    }
}

输出结果:

com.javalearn.reflect.realize.User

资源绑定器

以下代码使用资源绑定器来获取配置信息,无需IO流:

package com.javalearn.reflect.bundle;

import java.util.ResourceBundle;

public class TestForBundle {
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("file1");  // 文件必须在src文件中,扩展名必须为.properties,无需写扩展名
        String className = bundle.getString("className");
        System.out.println(className);
    }
}

输出结果:

com.javalearn.reflect.realize.User

posted on 2021-12-12 10:30  菜小疯  阅读(72)  评论(0编辑  收藏  举报