Java入門 解析配置文件的文件問題(轉)
我們在解析配置文件的時候,常常會為路徑發愁,我就遇到過這樣的情況
如上圖所示:
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()方法可以得到了當前類的Class對象,也可以用ParseProperties.class.getClass()方法來實現同樣的效果。之后調用其getResourceAsStream("database.properties")方法來解析配置文件。getResourceAsStream()方法解析文件時候的相對路徑是當前類的包路徑。
就當前的包來說,zy.pro.sc.db對應的路徑是src/zy/pro/sc/db。由于我們要解析的文件和解析類在同一目錄下,所以我們的路徑是"database.properties"。
如果我們的解析文件和解析類不在同一目錄下呢,如以下目錄結構:

那么先看一下我們解析類的代碼:
InputStream is=this.getClass().getResourceAsStream("/database.properties");
解析路徑變成了"/database.properties", “/“表示取當前類所在的包的根路徑下的database.properties文件,也就是相對于ParsePropertie.class的包的根路徑下的 database.properties文件。
用這種方法更有靈活性。此地要認真體會。不用這種方法,你的解析類只能在目錄結構不發生改變的情況下使用。否則將發生異常。例如:你的解析類在servlet中調用的時候就會拋出找不到文件的異常。
此路徑的定位方法也可以使用于解析XML的文件。詳細情況同上。
posted on 2008-04-28 13:21 九寶 閱讀(306) 評論(0) 編輯 收藏 所屬分類: Java