java读取properties配置文件总结

java读取properties配置文件总结

在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等。而我们经常读取配置文件的方法有以下两种:

(1).使用getResourceAsStream()方法读取配置文件。

(2).使用InputStream()流去读取配置文件。

注意:在使用getResourceAsStream()读取配置文件时,要特别注意配置文件的路径的写法。

this.getClass.getResourceAsStream(fileName)..使用类和资源文件在同一目录下;

this.getclass.getLoader.getResourceAsStream(fileName)..资源文件和classes同级。

下面,我以一个实例来具体讲述分别使用上述两种方法来读取.properties配置文件。

1.项目结构

在项目中,.properties文件的存放路径基本有以上4种,所有在下面的测试中我会用2种方法读取上面的4种不同路径下的.properties文件。(对应上面的4个配置文件)

(1).src下面config.properties包内的配置文件;

1 name=\u5F20\u4E09
2 age=23

(2).和使用配置文件位于同一包里面的.properties配置文件;

1 name=\u674E\u56DB
2 age=14

(3).src根目录下面的配置文件;

1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/goods
3 jdbc.usename=root
4 jdbc.password=123456

(4).位于另外一个source文件夹里面的配置文件。

1 dbuser=user
2 dbpassword=root
3 database=javaTest

2.java读取properyies配置文件

首先,创建读取.properties的工具类PropertiesUtil.java

代码清单【1】

  1 package read.propertiesFile.test;
  2
  3 import java.io.BufferedInputStream;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.text.MessageFormat;
  9 import java.util.Properties;
 10
 11
 12 /**
 13  * java读取properties配置文件工具类
 14  * @author Administrator
 15  *
 16  * 2016/12/04
 17  */
 18 public class PropertiesUtil
 19 {
 20     public static final PropertiesUtil INSTANCE = new PropertiesUtil();
 21
 22     public static PropertiesUtil getInstance()
 23     {
 24         return INSTANCE;
 25     }
 26     /**
 27      * 1.使用getSourceAsStream读取配置文件
 28      */
 29     public void readPropertiesByGetSourceAsStream()
 30     {
 31         /*
 32          * 1.src下面config.properties包内的配置文件
 33          * test1.properties
 34          */
 35         InputStream is1 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("config/properties/test1.properties");
 36
 37         /*
 38          * 2.读取和JavaReadPropertiesTest类位于同一个包里面的配置文件
 39          * test2.properties
 40          */
 41         InputStream is2 = JavaReadPropertiesTest.class.getResourceAsStream("test2.properties");
 42
 43         /*
 44          * 3.读取根目录下面的配置文件
 45          * jdbc.properties
 46          */
 47         InputStream is3 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
 48
 49         /*
 50          * 4.读取位于另外一个source文件夹里面的配置文件
 51          * config.properties
 52          */
 53         InputStream is4 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("config.properties");
 54         Properties p = new Properties();
 55         System.out.println("使用getSourceAsStream()读取配置文件...");
 56         try
 57         {
 58             System.out.println("---读取is1开始---");
 59             p.load(is1);
 60             System.out.println("test1.properties:name = "+ p.getProperty("name")
 61                     + ",age = " + p.getProperty("age"));
 62             System.out.println("---读取is1结束---");
 63             System.out.println("-----------------------------------------------");
 64
 65             System.out.println("---读取is2开始---");
 66             p.load(is2);
 67             System.out.println("test2.properties:name = "+ p.getProperty("name")
 68                     + ",age = " + p.getProperty("age"));
 69             System.out.println("---读取is2结束---");
 70             System.out.println("-----------------------------------------------");
 71
 72             System.out.println("---读取is3开始---");
 73             p.load(is3);
 74             System.out.println("jdbc.properties:");
 75             // 这里的%s是java String占位符
 76             System.out.println(String.format("jdbc.driver=%s",p.getProperty("jdbc.driver")));
 77             System.out.println(String.format("jdbc.url=%s",p.getProperty("jdbc.url")));
 78             System.out.println(String.format("jdbc.usename=%s",p.getProperty("jdbc.usename")));
 79             System.out.println(String.format("jdbc.password=%s",p.getProperty("jdbc.password")));
 80             System.out.println("---读取is3结束---");
 81             System.out.println("-----------------------------------------------");
 82
 83             System.out.println("---读取is4开始---");
 84             p.load(is4);
 85             System.out.println(MessageFormat.format("dbuser={0}", p.getProperty("dbuser")));
 86             System.out.println(MessageFormat.format("dbpassword={0}", p.getProperty("dbpassword")));
 87             System.out.println(MessageFormat.format("database={0}", p.getProperty("database")));
 88             System.out.println("---读取is4结束---");
 89         }
 90         catch (IOException e)
 91         {
 92             e.printStackTrace();
 93         }
 94         finally
 95         {
 96             if(null != is1)
 97             {
 98                 try {
 99                     is1.close();
100                 }
101                 catch (IOException e)
102                 {
103                     e.printStackTrace();
104                 }
105             }
106
107             if(null != is2)
108             {
109                 try {
110                     is2.close();
111                 }
112                 catch (IOException e)
113                 {
114                     e.printStackTrace();
115                 }
116             }
117
118             if(null != is3)
119             {
120                 try {
121                     is3.close();
122                 }
123                 catch (IOException e)
124                 {
125                     e.printStackTrace();
126                 }
127             }
128
129             if(null != is4)
130             {
131                 try {
132                     is4.close();
133                 }
134                 catch (IOException e)
135                 {
136                     e.printStackTrace();
137                 }
138             }
139         }
140     }
141
142     /**
143      * 2.使用InputStream读取配置文件
144      */
145     public void readPropertiesByInputStream()
146     {
147         InputStream is1 = null;
148         InputStream is2 = null;
149         InputStream is3 = null;
150         InputStream is4 = null;
151         System.out.println("使用InputStream读取配置文件...");
152             try
153             {
154                 /*
155                  * 1.src下面config.properties包内的配置文件
156                  * test1.properties
157                  */
158                 is1 = new BufferedInputStream(new FileInputStream("src/config/properties/test1.properties"));
159
160                 /*
161                  * 2.读取和JavaReadPropertiesTest类位于同一个包里面的配置文件
162                  * test2.properties
163                  */
164                 is2 = new BufferedInputStream(new FileInputStream("src/read/propertiesFile/test/test2.properties"));
165
166                 /*
167                  * 3.读取根目录下面的配置文件
168                  * jdbc.properties
169                  */
170                 is3 = new BufferedInputStream(new FileInputStream("src/jdbc.properties"));
171
172                 /*
173                  * 4.读取位于另外一个source文件夹里面的配置文件
174                  * config.properties
175                  */
176                 is4 = new BufferedInputStream(new FileInputStream("config/config.properties"));
177
178                 Properties p = new Properties();
179
180                 System.out.println("---读取is1开始---");
181                 p.load(is1);
182                 System.out.println("test1.properties:name = "+ p.getProperty("name")
183                         + ",age = " + p.getProperty("age"));
184                 System.out.println("---读取is1结束---");
185                 System.out.println("-----------------------------------------------");
186
187                 System.out.println("---读取is2开始---");
188                 p.load(is2);
189                 System.out.println("test2.properties:name = "+ p.getProperty("name")
190                         + ",age = " + p.getProperty("age"));
191                 System.out.println("---读取is2结束---");
192                 System.out.println("-----------------------------------------------");
193
194                 System.out.println("---读取is3开始---");
195                 p.load(is3);
196                 System.out.println("jdbc.properties:");
197                 System.out.println(String.format("jdbc.driver=%s",p.getProperty("jdbc.driver")));
198                 System.out.println(String.format("jdbc.url=%s",p.getProperty("jdbc.url")));
199                 System.out.println(String.format("jdbc.usename=%s",p.getProperty("jdbc.usename")));
200                 System.out.println(String.format("jdbc.password=%s",p.getProperty("jdbc.password")));
201                 System.out.println("---读取is3结束---");
202                 System.out.println("-----------------------------------------------");
203
204                 System.out.println("---读取is4开始---");
205                 p.load(is4);
206                 System.out.println("config.properties:");
207                 System.out.println(MessageFormat.format("bduser={0}", p.getProperty("bduser")));
208                 System.out.println(MessageFormat.format("bdpassword={0}", p.getProperty("bdpassword")));
209                 System.out.println(MessageFormat.format("database={0}", p.getProperty("database")));
210                 System.out.println("---读取is4结束---");
211
212             }
213             catch (FileNotFoundException e)
214             {
215                 e.printStackTrace();
216             }
217             catch (IOException e)
218             {
219                 e.printStackTrace();
220             }
221             finally
222             {
223                 if(null != is1)
224                 {
225                     try {
226                         is1.close();
227                     }
228                     catch (IOException e)
229                     {
230                         e.printStackTrace();
231                     }
232                 }
233
234                 if(null != is2)
235                 {
236                     try {
237                         is2.close();
238                     }
239                     catch (IOException e)
240                     {
241                         e.printStackTrace();
242                     }
243                 }
244
245                 if(null != is3)
246                 {
247                     try {
248                         is3.close();
249                     }
250                     catch (IOException e)
251                     {
252                         e.printStackTrace();
253                     }
254                 }
255
256                 if(null != is4)
257                 {
258                     try {
259                         is4.close();
260                     }
261                     catch (IOException e)
262                     {
263                         e.printStackTrace();
264                     }
265                 }
266             }
267     }
268     }
269     

然后,JUnit测试 JavaReadPropertiesTest.java

代码清单【2】

 1 package read.propertiesFile.test;
 2
 3 import org.junit.Test;
 4
 5 /**
 6  * java读取properties配置文件
 7  * @author Administrator
 8  *
 9  */
10
11 public class JavaReadPropertiesTest
12 {
13     /**
14      * 1.使用getSourceAsStream读取配置文件测试
15      */
16     @Test
17     public void readPropertiesByGetSourceAsStreamTest()
18     {
19         PropertiesUtil.getInstance().readPropertiesByGetSourceAsStream();
20     }
21
22
23     /**
24      *  2.使用InputStream读取配置文件测试
25      */
26     @Test
27     public void readPropertiesByInputStreamTest()
28     {
29         PropertiesUtil.getInstance().readPropertiesByInputStream();
30     }
31
32
33
34
35 }

3.输出结果

 1 使用getSourceAsStream()读取配置文件...
 2 ---读取is1开始---
 3 test1.properties:name = 张三,age = 23
 4 ---读取is1结束---
 5 -----------------------------------------------
 6 ---读取is2开始---
 7 test2.properties:name = 李四,age = 14
 8 ---读取is2结束---
 9 -----------------------------------------------
10 ---读取is3开始---
11 jdbc.properties:
12 jdbc.driver=com.mysql.jdbc.Driver
13 jdbc.url=jdbc:mysql://localhost:3306/goods
14 jdbc.usename=root
15 jdbc.password=123456
16 ---读取is3结束---
17 -----------------------------------------------
18 ---读取is4开始---
19 dbuser=user
20 dbpassword=root
21 database=javaTest
22 ---读取is4结束---
23 使用InputStream读取配置文件...
24 ---读取is1开始---
25 test1.properties:name = 张三,age = 23
26 ---读取is1结束---
27 -----------------------------------------------
28 ---读取is2开始---
29 test2.properties:name = 李四,age = 14
30 ---读取is2结束---
31 -----------------------------------------------
32 ---读取is3开始---
33 jdbc.properties:
34 jdbc.driver=com.mysql.jdbc.Driver
35 jdbc.url=jdbc:mysql://localhost:3306/goods
36 jdbc.usename=root
37 jdbc.password=123456
38 ---读取is3结束---
39 -----------------------------------------------
40 ---读取is4开始---
41 config.properties:
42 bduser=null
43 bdpassword=null
44 database=javaTest
45 ---读取is4结束---

4.补充

在这里,我在简要介绍一下,读取配置文件的全部配置信息的方法,以jdbc.properties文件为例。

 1 /**
 2      * 3.循环读取配置文件的全部信息
 3      */
 4     public void readAllInfo()
 5     {
 6         /*
 7          * 3.读取根目录下面的配置文件
 8          * jdbc.properties
 9          */
10         InputStream is3 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
11         Properties p = new Properties();
12         System.out.println("---读取is3开始---");
13         try
14         {
15             p.load(is3);
16             //读取资源文件的所有的key值
17             Enumeration en= p.propertyNames();
18             System.out.println("读取is3开始...");
19             while(en.hasMoreElements())
20             {
21                 String key = (String) en.nextElement();
22                 System.out.println(key + "=" + p.getProperty(key));
23
24             }
25             System.out.println("读取is3结束...");
26         }
27         catch (IOException e)
28         {
29             e.printStackTrace();
30             System.out.println("读取资源文件出错");
31         }
32         finally
33         {
34             if(null != is3)
35             {
36                 try
37                 {
38                     is3.close();
39                     System.out.println("关闭is3...");
40                 }
41                 catch (IOException e)
42                 {
43                     e.printStackTrace();
44                 }
45             }
46         }
47
48     }

输出结果是:

1 ---读取is3开始---
2 读取is3开始...
3 jdbc.url=jdbc:mysql://localhost:3306/goods
4 jdbc.driver=com.mysql.jdbc.Driver
5 jdbc.usename=root
6 jdbc.password=123456
7 读取is3结束...
8 关闭is3...

至此,读取配置文件的总结就先这样,后期有新的体会时,在进行增加。谢谢观阅。

时间: 2024-10-03 13:29:57

java读取properties配置文件总结的相关文章

java读取properties配置文件

java读取.properties配置文件 这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲的获取属性值大概有以下方法,以下三种方法逐渐优化,以达到最好的效果以下都以date.properties文件为例,该文件放在src目录下,文件内容为 startdate=2011-02-07 totalweek=25 方法一: public class Stweek { static private Strin

Java读取properties配置文件常用方法

在开发中对properties文件的操作还是蛮经常的,所以总结了几种操作方法,为后面的开发可以进行参考. 1.通过java.util.ResourceBundle类来读取 这边测试用到了枚举类进行传入文件的key值,然后获取value,可以进行灵活的配置. 通过这种方式读取properties文件不需要加.properties后缀名,只需文件名即可,如果有放在某一个包下,要加包的限定名,如放在com.frame.util包下,则要路径要用com/fram/util config.properti

java读取.properties配置文件的几种方法

读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util.HashTable,即实现了Map接口,所以,可使用相应的方法来操作属性文件,但不建议使用像put.putAll这两个方法,因为put方法不仅允许存入String类型的value,还可以存入Object类型的.因此java.util.Properties类提供了getProperty()和setPr

Java 读取Properties配置文件

读取Properties配置文件的方法,经常忘记,记录下来备忘一下: package utils; import java.io.IOException;import java.io.InputStream; import java.util.Properties; public class PropertyConfig { private static Properties config; static { config = new Properties(); InputStream in =

Java读取properties配置文件时,中文乱码解决方法

碰到了用java.util.Properties读取中文内容(UTF-8格式)的配置文件,发生中文乱码的现象 Properties prop=new Properties(); prop.load(Client.class.getClassLoader().getResourceAsStream("config.properties")); 由于使用这样的加载方式使用了系统默认的编码格式,不是UTF-8格式的读取模式,就会发生乱码情况. 正确解决方法 Properties prop=n

Java 读取properties 配置文件的几种方式

基于ClassLoder读取配置文件 Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入流 InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties"); // 使用properties对象加载输入流 properties.load(

Java读取.properties配置文件

1.源码 /** * 读取配置文件[目前只测了.properties配置文件]的工具类 * Created by li on 2015/9/13. */ public class PropertiesUtils { private static PropertiesConfiguration propertiesConfiguration; static { try { //初始化实例 propertiesConfiguration = new PropertiesConfiguration("

java读取properties配置文件方法(一)

为了修改项目参数方便,需要使用properties配置文件: 首先是需要三个jar包(不同的jar包,读取配置文件的方式会有所不同,这里使用的是2.6版本的jar包) commons comfigurations 依赖包 commons-lang commons-logging 然后开始就可以编写读取文件的代码了 现在先简单说一下第一种,如有不足之处欢迎指教. package properties; import org.apache.commons.configuration.Configur

java读取properties配置文件[转]

网上文章常见的几种读取.properties文件的方式 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2.使用java.util.ResourceBundle类的getBundle()方法  ResourceBundle rb = Res