Java中讀取配置文件中參數:
方法一:通過JDK中Properties來實現對配置文件的讀取。
Properties主要用於讀取Java的配置文件,不同的編程語言有自己所支持的配置文件,配置文件中很多變量是經常改變的,為了方便用戶的配置,能讓用戶夠脫離程序本身去修改相關的變量設置。就像在Java中,其配置文件常為.properties文件,是以鍵值對的形式進行參數配置的。
1、配置文件的設置
sysName StefanieSun
sysChinesName=孫燕姿
sysBirthday:1976-07-02
#空格、:、= 三種方式均可表示鍵值對的存在。
2、新建讀取類
public class SystemProperties{
//設置配置文件路徑 private final static String urlPath1 = "cn/com/yitong/util/system.properties";
private final static String urlPath2 = "src/main/java/cn/com/yitong/util/system.properties"; private fianl static Properties properties = new Properties();
方法1:使用classLoader來獲取相對目錄下文件(文件必須同SystemProperties同目錄下;路徑見"圖1";此文件地址無需精確至"src/main/java/cn/com/yitong/util/system.properties",因為是同
SystemProperties同目錄)
static{
try{
InputStream inputStream = ClassLoader.getSystemResourceAsStream(urlPath1);
properties.load(inputStream);
//properties.load(new InputStreamReader(ClassLoader.getSystemResourceAsStream(urlPath), "UTF-8"));方法類似
}catch(IOExecption e){
e.printStackTrace();
}
}
方法2:使用BufferedReader來讀取配置文件。可以讀取任意路徑下的配置文件,並非一定同SystemProperties類同目錄(此方法讀取任意文件下配置文件,故相對路徑為相對路徑下的精確路徑[需要相對精確的路
徑來確定文件])
static{
try{
BufferedReader bufferedReader = new BufferedReader(new FileReader(urlPath2));
properties.load(bufferedReader);
}catch(IOException e ){
e.printStackTrace();
}
}
獲取value值方法:
public static String getValue(String key){
return properties.getProperty(key).trim();
}
//通過key獲取值,若值為null則返回defaultValue
public static String getValue(String key,String defaultValue){
return properties.getProperty(key,defaultValue);
}
}
圖1
3、測試類:
public class SystemPropertiesText { public static void main(String[] strings) { System.err.println(SystemProperties.getValue("sysName"));
}
}
方法二:通過ResourceBundle直接讀取並取值
方法一中讀取配置文件的時候支持多種格式的配置文件(properties,md等),而ResourceBundle只能讀取.properties格式文件。ResourceBundle主要用於獲取文件國際化、本地化(詳細內容請自行搜索了解,此處不過多說明)。
1、配置文件信息同方法一
2、此方法不需要特定的java類來編寫,可直接獲取。
public class SystemPropertiesText{ public static void main(String[] s){
String urlPath = "cn/com/yitong/util/system.properties";
ResourceBundle resourceBundle = ResourceBundle.getBundle(urlPath);
System.err.println(resourceBundle.getString("sysName"));
}
}