六种获取配置properties文件的方法

总结一下六种获取配置properties文件的方法,代码如下:

  1 package com.xujingyang.test ;
  2 
  3 import java.io.BufferedInputStream ;
  4 import java.io.FileInputStream ;
  5 import java.io.InputStream ;
  6 import java.util.Locale ;
  7 import java.util.Properties ;
  8 import java.util.PropertyResourceBundle ;
  9 import java.util.ResourceBundle ;
 10 import org.junit.Test ;
 11 
 12 /**
 13  * @descript  六种获取配置文件的方法,注意各种的路径的问题
 14  * @author    xujingyang
 15  * @time      2017年5月15日下午4:23:18
 16  */
 17 public class TestReadProperties {
 18     
 19     /**
 20      * 1、使用java.util.Properties类的load()方法
 21      */
 22     @Test
 23     public void read1(){
 24         try {
 25             InputStream stream=new BufferedInputStream(new FileInputStream("src/my.properties"));
 26             Properties p=new Properties();
 27             p.load(stream);
 28             String name = p.get("name").toString() ;
 29             String age = p.get("age").toString() ;
 30             System.out.println(name+":"+age) ;
 31         } catch (Exception e) {
 32             e.printStackTrace();
 33         }
 34     }
 35     
 36     /**
 37      * 2、使用java.util.ResourceBundle类的getBundle()方法
 38      */
 39     @Test
 40     public void read2(){
 41         try {
 42             ResourceBundle bundle = ResourceBundle.getBundle("my", Locale.getDefault()) ;
 43             String name = bundle.getString("name");
 44             String age = bundle.getString("age");
 45             System.out.println(name+":"+age) ;
 46         } catch (Exception e) {
 47             e.printStackTrace();
 48         }
 49     }
 50     
 51     
 52     
 53     /**
 54      *3、 使用java.util.PropertyResourceBundle类的构造函数
 55      */
 56     @Test
 57     public void read3(){
 58         try {
 59             InputStream stream=new BufferedInputStream(new FileInputStream("src/my.properties"));
 60             ResourceBundle bundle=new PropertyResourceBundle(stream);
 61             String name = bundle.getString("name");
 62             String age = bundle.getString("age");
 63             System.out.println(name+":"+age) ;
 64         } catch (Exception e) {
 65             e.printStackTrace();
 66         }
 67     }
 68     
 69     
 70     
 71     /**
 72      *4、 使用class变量的getResourceAsStream()方法
 73      */
 74     @Test
 75     public void read4(){
 76         try {
 77             InputStream stream = TestReadProperties.class.getResourceAsStream("/my.properties") ;
 78             Properties p=new Properties();
 79             p.load(stream);
 80             String name = p.get("name").toString() ;
 81             String age = p.get("age").toString() ;
 82             System.out.println(name+":"+age) ;
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85         }
 86     }
 87     
 88     
 89     
 90     /**
 91      *5、 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
 92      */
 93     @Test
 94     public void read5(){
 95         try {
 96             InputStream stream = TestReadProperties.class.getClassLoader().getResourceAsStream("my.properties") ;
 97             Properties p=new Properties();
 98             p.load(stream);
 99             String name = p.get("name").toString() ;
100             String age = p.get("age").toString() ;
101             System.out.println(name+":"+age) ;
102         } catch (Exception e) {
103             e.printStackTrace();
104         }
105     }
106     
107     
108     /**
109      *6、 使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
110      */
111     @Test
112     public void read6(){
113         try {
114             InputStream stream = ClassLoader.getSystemResourceAsStream("my.properties");
115             Properties p=new Properties();
116             p.load(stream);
117             String name = p.get("name").toString() ;
118             String age = p.get("age").toString() ;
119             System.out.println(name+":"+age) ;
120         } catch (Exception e) {
121             e.printStackTrace();
122         }
123     }
124     
125 }

 

配置文件:

     name的值是小明,这里配置文件会自动编码

 

补充:

Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);

posted @ 2015-05-15 16:27  oldmonk  阅读(414)  评论(0编辑  收藏  举报
Fork me on GitHub