Java 读取 properties 配置文件的几种方式及注意点

1、引言

java开发中,经常需要读取配置文件,有时即使我们方法是对的,但是就是读取不到需要的内容,会报下面的错:

java.io.FileNotFoundException: sr/configure/config.properties (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at com.test.properties.TestProperties.getProperties_2(TestProperties.java:118)
	at com.test.properties.TestProperties.main(TestProperties.java:253)

或者这个错:

Exception in thread "main" java.lang.NullPointerException
	at java.util.Properties$LineReader.readLine(Properties.java:434)
	at java.util.Properties.load0(Properties.java:353)
	at java.util.Properties.load(Properties.java:341)
	at com.test.properties.TestProperties.getProperties_3(TestProperties.java:174)
	at com.test.properties.TestProperties.main(TestProperties.java:258)

等等。

2、几种读取方式

2.1 基于ClassLoder读取配置文件

    Properties properties = new Properties();
    // 使用ClassLoader加载properties配置文件生成对应的输入流
    InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");
    // 使用properties对象加载输入流
    properties.load(in);
    //获取key对应的value值
    properties.getProperty(String key);

注意: 该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便。

2.2 基于 InputStream 读取配置文件

Properties properties = new Properties();
 // 使用InPutStream流读取properties文件
 BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties"));
properties.load(bufferedReader);
// 获取key对应的value值
properties.getProperty(String key);

注意: 该方式的优点在于可以读取任意路径下的配置文件

2.3 通过 java.util.ResourceBundle 类来读取,这种方式比使用 Properties 要方便一些

通过 ResourceBundle.getBundle() 静态方法来获取(ResourceBundle是一个抽象类),这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可
//config为属性文件名,放在包com.test.config下,如果是放在src下,直接用config即可  
ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config");
String value = resource.getString("key"); 
从 InputStream 中读取,
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值