兩種解析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();
}
}
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();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.