Java基础篇——获取.properties配置文件

背景

Java开发过程当中,需要将一些易变的配置参数设置在xml文件或许是properties配置文件当中。然而xml文件需要通过DOM或SAX方式解析,而读取properties配置文件就比较容易。下面介绍几种方式。

方法一:基于ClassLoader读取配置文件

目录结构:
在这里插入图片描述

代码实现:

public static void ClassLoader() throws IOException {
    URLresource = LoadProperties.class.getClassLoader().getResource("");
    System.out.println(resource);
    InputStream resourceAsStream = LoadProperties.class.getClassLoader().getResourceAsStream("config/config.properties");
    Properties properties = new Properties();
	properties.load(resourceAsStream);

    for (Map.Entry<Object,Object> entry : properties.entrySet()) {
    Object key = entry.getKey();
    Object value = entry.getValue();
	System.out.println(key + " " + value);
}

输出结果:
file:/E:/IDEA/JavaBase/out/production/IOStream/
password 123456
username mysql

这种方式加载虽然简单,但是存在局限,就是配置文件必须在类路径下。

方法二:基于InputStream读取配置文件

代码实现:

public static void InputStreamLoader() throws IOException {
    BufferedReader bufferedReader = new BufferedReader(new FileReader("E:" + File.separator +"config.properties"));
    Properties properties = new Properties();
    properties.load(bufferedReader);

    for (Map.Entry<Object, Object> entry : properties.entrySet()) {
        Object key = entry.getKey();
        Object value = entry.getValue();
        System.out.println(key + " " + value);
    }
}

输出样例:
password 123456
username mysql

优点:这种方式的优点是可以读取任意路径下的配置文件。这种实现方法是很万能的,因为配置文件可以在任何地方。

方法三:java.util.ResourceBundle 类读取

目录结构:
在这里插入图片描述

代码样例:

public static void ResourceBundleLoader() throws IOException {
    //方式一:直接从src文件下获取
    ResourceBundle bundle = ResourceBundle.getBundle("config");
    for (String s : bundle.keySet()) {
        System.out.println(s + " " + bundle.getString(s));
    }

    //方式二;从执行的包下获取配置文件
    StringBuffer buffer = new StringBuffer().append("com").append(File.separator)
            .append("test").append(File.separator).append("config").append(File.separator).append("config");
    bundle = ResourceBundle.getBundle(buffer.toString());
    for (String s : bundle.keySet()) {
        System.out.println(s + " " + bundle.getString(s));
    }
}

注意
对路径的设置问题:
1、ResourceBundle获取配置文件的时候,文件名称不用加.properties后缀。
2、如果配置文件在当前类所在的包下,那么需要使用包名进行限定,比如说com.test.config包下的config.properties文件,那么需要使用com\test\config\config路径,使用ResourceBundle来获取配置文件。
3、如果文件在src目录下,那么直接使用config名来获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值