常用鏈接

          統(tǒng)計

          最新評論

          Java入門 解析配置文件的文件問題(轉(zhuǎn))

          我們在解析配置文件的時候,常常會為路徑發(fā)愁,我就遇到過這樣的情況
            
           

            如上圖所示:
            
            ParseProperties.java是配置文件database.properties的解析類,那么我們怎樣去取得它的路徑并解析起配置呢?看解析類ParseProperties的源代碼如下:
            
            package zy.pro.sc.db;
            
            import java.util.*;
            import java.io.*;
            
            public class ParseProperties {
            
            Properties properties = new Properties();
            
            public ParseProperties() {
            try{
            this.parseProp();
            }catch(Exception e){
            e.printStackTrace();
            }
            }
            
            public Properties parseProp()throws IOException {
            InputStream is=this.getClass().getResourceAsStream("database.properties");
          /*          
          ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
          InputStream in = classLoader.getSystemResourceAsStream(fileName);
           */
            properties.load(is);
            is.close();
            return null;
            }
            public String getProperties(String propStr){
            return properties.getProperty(propStr);
            }
            public static void main(String[] args) {
            ParseProperties pp=new ParseProperties();
            String driver=pp.getProperties("jdbc.driver");
            System.out.println(driver);
            }
            }
            看粗體部分,this.getClass()方法可以得到了當(dāng)前類的Class對象,也可以用ParseProperties.class.getClass()方法來實現(xiàn)同樣的效果。之后調(diào)用其getResourceAsStream("database.properties")方法來解析配置文件。getResourceAsStream()方法解析文件時候的相對路徑是當(dāng)前類的包路徑。
            
            就當(dāng)前的包來說,zy.pro.sc.db對應(yīng)的路徑是src/zy/pro/sc/db。由于我們要解析的文件和解析類在同一目錄下,所以我們的路徑是"database.properties"。
            
            如果我們的解析文件和解析類不在同一目錄下呢,如以下目錄結(jié)構(gòu):
            

            那么先看一下我們解析類的代碼:
            
            InputStream is=this.getClass().getResourceAsStream("/database.properties");
            
            解析路徑變成了"/database.properties", “/“表示取當(dāng)前類所在的包的根路徑下的database.properties文件,也就是相對于ParsePropertie.class的包的根路徑下的 database.properties文件。
            
            用這種方法更有靈活性。此地要認(rèn)真體會。不用這種方法,你的解析類只能在目錄結(jié)構(gòu)不發(fā)生改變的情況下使用。否則將發(fā)生異常。例如:你的解析類在servlet中調(diào)用的時候就會拋出找不到文件的異常。
            
            此路徑的定位方法也可以使用于解析XML的文件。詳細(xì)情況同上。

          posted on 2008-04-28 13:21 九寶 閱讀(306) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 无锡市| 吉林市| 抚松县| 星座| 陵川县| 开化县| 曲阳县| 建阳市| 寿光市| 罗田县| 华坪县| 鲜城| 彩票| 恩平市| 兴仁县| 柘荣县| 宜阳县| 珲春市| 曲沃县| 洛浦县| 松滋市| 大宁县| 富宁县| 昌图县| 榆中县| 嘉兴市| 扶风县| 大田县| 安康市| 满城县| 聊城市| 陇南市| 沁水县| 巴里| 新丰县| 平罗县| 江西省| 宝清县| 丹阳市| 万载县| 商河县|