天天看點

新手入門 解析配置檔案的問題

<!-- Error --> 轉自: http://edu.yesky.com/edupxpt/221/2142721.shtml    我們在解析配置檔案的時候,常常會為路徑發愁,我就遇到過這樣的情況

    

新手入門 解析配置檔案的問題

  如上圖所示:

  

  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");
  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的檔案。詳細情況同上。