读取置文件xxx.properties配置文件

  1. mport java.io.IOException;  
  2. import java.io.InputStream;  
  3. import java.util.Properties;  
  4.   
  5. /**解析xxx.properties文件 
  6.  * 并假定使用 ISO 8859-1 字符编码;即每个字节都是 Latin1 字符 
  7.  * 对于非 Latin1 的字符和某些特殊字符,可以使用 Unicode 转义以键和元素的形式来表示它们 
  8.  * 配置文件格式: 
  9.  * 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对) 
  10.  * 如:键为Truth,值为Beauty 
  11.  * Truth  = Beauty 
  12.  *     Truth =    Beauty 
  13.  * Truth :    Beauty 
  14.  * 键为fruits,值为apple,banana,pear,cantaloupe,watermelon,kiwi,mango 
  15.  * fruits: 
  16.  * apple,banana,pear,/ 
  17.  * cantaloupe,watermelon,/ 
  18.  * kiwi,mango 
  19.  * 注释行以 ASCII 字符 '#' 或 '!' 作为开头,不参加解析 
  20.  * @author guwh 
  21.  * 
  22.  */  
  23. public class TestParseProperties {  
  24.     private static TestParseProperties parseProperties;  
  25.     //获取java.util.Properties类  
  26.     Properties properties = new Properties();  
  27.   
  28.     private TestParseProperties() {  
  29.         try {  
  30.             this.parseProp();  
  31.         } catch (Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.   
  36.     public static TestParseProperties getInstance() {  
  37.         if (parseProperties == null)  
  38.             parseProperties = new TestParseProperties();  
  39.         return parseProperties;  
  40.   
  41.     }  
  42.   
  43.       
  44.     public Properties parseProp() throws IOException {  
  45.         /** 
  46.          * Class.getResourceAsStream(String name)  
  47.          * 查找具有给定名称的资源,return 一个 InputStream 对象 
  48.          * 如果找不到带有该名称的资源,则返回 null  
  49.          * NullPointerException - 如果 name 是 null 
  50.          */  
  51.           
  52.         /** 
  53.          * 配置文件jwt.properties在包src.com.jabberchina.xmppserver.plugin.jwt.vo下 
  54.         InputStream is = this.getClass().getResourceAsStream("/com/jabberchina/xmppserver/plugin/jwt/vo/jwt.properties"); 
  55.          */  
  56.         /** 
  57.          * 配置文件jwt.properties1与本类TestParseProperties在同一包目录src.test下 
  58.         InputStream is = this.getClass().getResourceAsStream("jwt.properties1"); 
  59.          */  
  60.           
  61.         //配置文件jwt2.properties在包src.test.property下  
  62.         InputStream is = this.getClass().getResourceAsStream("property/jwt2.properties");  
  63.         /** 
  64.          * Properties.load(InputStream inStream)从输入流中读取属性列表(键和元素对) 
  65.          * IOException - 如果读取输入流时发生错误。 
  66.          * IllegalArgumentException - 如果输入流包含错误的 Unicode 转义序列 
  67.          * 此方法返回后,指定的流(inStream)仍保持打开状态,所以若不再使用inStream要手动关闭 
  68.          * 返回类型void  
  69.          */  
  70.         properties.load(is);  
  71.         is.close();  
  72.         return properties;  
  73.     }  
  74.   
  75.     public String getProperties(String key) {  
  76.         /** 
  77.          *用指定的键在此属性列表中搜索属性 
  78.          *如果在此属性列表中未找到该键,则接着递归检查默认属性列表及其默认值,如果未找到属性,则此方法返回 null 
  79.          *返回类型String 
  80.          */  
  81.         return properties.getProperty(key);  
  82.     }  
  83.   
  84.     public static void main(String[] args) {  
  85.         String key = "dadaPath";  
  86.         String restult = TestParseProperties.getInstance().getProperties(key);  
  87.         System.out.println("proties value is "+restult);  
  88.     }  
  89.   
  90. }  

当然 property也可以读取xml配置文件方法为  property.loadFromXML(InputStream inputStream)

Java代码 
  1. /** 
  2. * @author guwh 
  3. * @version 创建时间:2011-4-2 下午03:53:10 
  4. * 类说明 
  5. */   
  6. package test;  
  7.   
  8. import java.io.BufferedInputStream;  
  9. import java.io.FileInputStream;  
  10. import java.io.IOException;  
  11. import java.util.Properties;  
  12.   
  13. import org.apache.commons.io.FilenameUtils;  
  14.   
  15. /** 
  16.  * XML 属性文档具有以下 DOCTYPE 声明: 
  17.  *   <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
  18.  *   如: 
  19.  *   <?xml version="1.0" encoding="UTF-8"?>  
  20.  *<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
  21.  *<properties>  
  22.  *<entry key="pinyin">hehe</entry> 
  23.  *<entry key="name">呵呵</entry> 
  24.  *</properties> 
  25.  * @author guwh 
  26.  * 
  27.  */  
  28. public class TestParseXML {  
  29.     private static TestParseXML parseXML;  
  30.     Properties properties = new Properties();  
  31.     private TestParseXML(){  
  32.         try{  
  33.             this.parseXML();  
  34.         }catch(Exception e){  
  35.             e.printStackTrace();  
  36.         }  
  37.     }  
  38.     public static TestParseXML getInstance(){  
  39.         if(parseXML == null)  
  40.             parseXML = new TestParseXML();  
  41.         return parseXML;  
  42.     }  
  43.       
  44.     public Properties parseXML() throws IOException{  
  45.         String filePath = "D:/";  
  46.         String filename = "test.xml";  
  47.         /** 
  48.          * 以绝对路径方式从磁盘上读取 
  49.          *  
  50.          */  
  51.         BufferedInputStream inBuff=new BufferedInputStream(new FileInputStream(filePath+filename));  
  52.         /** 
  53.          * 以相对路径方式从工程中读取 
  54.                  *  String filename = "test.xml"; 
  55.          * InputStream inBuff = this.getClass().getResourceAsStream(filename); 
  56.          */  
  57.         if("xml".equalsIgnoreCase(FilenameUtils.getExtension(filename)))  
  58.             properties.loadFromXML(inBuff);  
  59.         inBuff.close();  
  60.         return properties;  
  61.     }  
  62.       
  63.     public String gerXMLValue(String key){  
  64.         return properties.getProperty(key);  
  65.     }  
  66.       
  67.     public static void main(String[] args) {  
  68.         String key = "pinyin";  
  69.         String restult = TestParseXML.getInstance().gerXMLValue(key);  
  70.         System.out.println("gerXMLValue value is "+restult);  
  71.     }  
  72.   
  73. }  

  74.  注意xml配置文件中的encoding="UTF-8"要与实际文件中的编码方式一致,否则会报错

    二:利用ResourceBundle类读取配置文件此类多用于解析国际化文件

     

    1. import java.util.PropertyResourceBundle;  
    2. import java.util.ResourceBundle;  
    3.   
    4. public class TestResourceBundleParse {  
    5.     private TestResourceBundleParse() {  
    6.   
    7.     }  
    8.   
    9.     private static PropertyResourceBundle prb;  
    10.     static {  
    11.         /** 
    12.          * name 为完全限定名(即包名+文件/类名) 
    13.          */  
    14.         String name = "com.jabberchina.xmppserver.plugin.jwt.util.jwt1";  
    15.         prb = (PropertyResourceBundle) ResourceBundle.getBundle(name);  
    16.     }  
    17.   
    18.     public static final String getString(String propertyName) {  
    19.         return prb.getString(propertyName);  
    20.     }  
    21.     public static void main(String[] args) {  
    22.         String key = "dadaPath";  
    23.         String restult = TestResourceBundleParse.getString(key);  
    24.         System.out.println("proties value is "+restult);  
    25.     }  
    26. }  

     

    注意:

    以上方法中读文件时,文件名(即文件路径的书写)是不同的,在方法一中获得InputStream流时若通过Class.getResourceAsStream(String  filename)获得,则filename为相对路径+文件名;若通过new FileInputStream(String  filename)的其他new一个流的方式获得InputStream流则filename为绝对路径+文件名,即磁盘中实际路径+文件名。而二中通过ResourceBundle.getBundle(String name)的方式获得PropertyResourceBundle对象时,name为完全限定名,需注意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>