java读取Properties配置文件

java读取Properties配置文件的方式有六种,这里我只写自己掌握的三种:通过java.lang.Class类的getResourceAsStream(String name) 方法来实现。

java代码:

InputStream in = getClass().getResourceAsStream("资源Name");  

这句代码有点问题,那就是getClass()默认调用的的时候省略了this,而this不能在静态(static)方法或者静态块中使用,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。

话不多说,上代码:

 1 package com.qad.DButil;
 2 
 3 import java.io.InputStream;
 4 import java.util.Properties;
 5 
 6 public class PropertyTest {
 7     public static void main(String[] args) {  
 8          InputStream inputStream = Object.class.getResourceAsStream("/com/qad/properties/DBSource.properties");  
 9           InputStream inputStream2 = PropertyTest.class.getResourceAsStream("/com/qad/properties/DBSource.properties");
        //class.getClassLoader().getResourceAsStream()访问的是src目录下的文件,并且前面不能加'/'
10 InputStream inputStream3 = PropertyTest.class.getClassLoader().getResourceAsStream("DBSource.properties"); 11 Properties p = new Properties(); 12 try { 13 p.load(inputStream2); 14 inputStream2.close(); 15 } catch (Exception e1) { 16 e1.printStackTrace(); 17 } 18 System.out.println("ip:" + p.getProperty("db.url") + "port:" 19 + p.getProperty("port")); 20 } 21 22 }

这里实际上有三种实现方式,但是有一个需要注意的地方,当java文件和配置文件在src根目录下的时候,只需要'/'+文件名字.properties,当java文件和配置文件在同一个包内时,需要从项目根目录开始查找文件路径,例如上述路径/com/qad/properties/DBSource.properties,好了,这就是三种读取方式。

补充:class.getResourceAsStream()和class.getClassLoader().getResourceAsStream()的区别

        1.class.getResourceAsStream()可以访问从classpath(src目录)下的所有文件;

    2.class.getClassLoader().getResourceAsStream()访问的只能是classpath下的文件,并且文件名字前不能加'/',否则会报空指针异常。

原文地址:https://www.cnblogs.com/qadyyj/p/5692064.html