兩種解析properties配置文件的方式

package com.mhc.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 *
 *    兩種方法解析Properties文件,其實是一種,只是尋找路徑的方式不同,
 *    一種採用相對的路徑,一種是絕對的
 *    兩種方式可根據代碼位置和目標文件位置是否在兩層內隨機應變
 */
public class ParseProperties {
    //第一種方法 : 採用絕對路徑方法
    public static void parseProperties1(){
        //用java的getProperty獲得user.dir的系統屬性的路徑
        String filePath = System.getProperty("user.dir")+"/src/db.properties";
        System.out.println(filePath);
        //生成文件對象
        File file = new File(filePath);
        //生成文件輸入流
        FileInputStream in = null;
        try {
            in = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        //生成properties對象
        Properties p =  new Properties();
        try {
            p.load(in);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //輸出properties文件的內容
        System.out.println("driver        "+p.getProperty("jdbc.driver"));
        System.out.println("UserName    "+p.getProperty("jdbc.userName"));
        System.out.println("passWord    "+p.getProperty("jdbc.passWord"));
        System.out.println("jdbcUrl    "+p.getProperty("jdbc.jdbcUrl"));
    }
    
    //第二種方法  :採用相對定位方法
    public static void parseProperties2(){
        //輸入流
//        String path = ParseProperties.class.getResource(".").getFile().toString();
//        //  /H:/JavaLearning/MicroMessage/WebRoot/WEB-INF/classes/com/mhc/test
//        //以'/'開頭的是絕對路徑
//        path = path.split("/W")[0]+"/src/db.properties";
//        System.out.println(path);
        /**
         * 用AsStream這個函數會自動從當前目錄爲根目錄進行查找,所以在兩層以內可以用./或者../尋找像對的路徑
         * 因爲我的放置路徑不在兩層之內,不便實現,有興趣的話可以自行挪動到兩層之內在實現
         */
        InputStream in = ParseProperties.class.getResourceAsStream("../db.properties");
        //這裏獲取的in爲null,修改方法上面已說清楚
        //生成properties對象
        Properties p =  new Properties();
        try {
            p.load(in);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //輸出properties文件的內容
        System.out.println("driver        "+p.getProperty("jdbc.driver"));
        System.out.println("UserName    "+p.getProperty("jdbc.userName"));
        System.out.println("passWord    "+p.getProperty("jdbc.passWord"));
        System.out.println("jdbcUrl    "+p.getProperty("jdbc.jdbcUrl"));
    }
    public static void main(String[] args) {
        parseProperties2();
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章