zoukankan      html  css  js  c++  java
  • 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=u5F20u4E09
    2 age=23

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

    1 name=u674Eu56DB
    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...

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

  • 相关阅读:
    golang的并行快速排序
    深信服面试
    一道算法题-勇敢的牛牛
    一道算法题-打车
    一道算法题-最少需要换掉的瓷砖数量
    《C++ Primer Plus》读书笔记之二—复合类型
    图解:TCP协议中的三次握手和四次挥手
    一道算法题-不用加减乘除做加法
    OSI七层模型与TCP/IP五层模型
    Socket编程
  • 原文地址:https://www.cnblogs.com/lthIU/p/6132227.html
Copyright © 2011-2022 走看看