-
包測試.bwl;
導入 java.io.FileNotFoundException;
導入java.io.IOException;
導入 java.io.InputStream;
導入java.util.Properties;
公開課測驗{
私有靜態屬性屬性 = new Properties();
公共靜態無效主(字串[] args){
嘗試 {
InputStream is = Test.class.getClassLoader().getResourceAsStream("cache.properties");
屬性.load(is);
字串大小=properties.getProperty(“cache.size”);
writeLog("配置成功!" + size);
} catch (FileNotFoundException e) {
writeLog("設定檔不存在!" + e.getMessage());
} catch (IOException e) {
writeLog("讀取設定檔IO錯誤!" + e.getMessage());
}
}
公共靜態無效writeLog(字串strLog){
System.out.println(strLog);
}
}
包測試.bwl;
導入 java.io.FileNotFoundException;
導入java.io.IOException;
導入 java.io.InputStream;
導入java.util.Properties;
公開課測驗{
私有靜態屬性屬性 = new Properties();
公共靜態無效主(字串[] args){
嘗試 {
InputStream is = Test.class.getClassLoader().getResourceAsStream("cache.properties");
屬性.load(is);
字串大小=properties.getProperty(“cache.size”);
writeLog("配置成功!" + size);
} catch (FileNotFoundException e) {
writeLog("設定檔不存在!" + e.getMessage());
} catch (IOException e) {
writeLog("讀取設定檔IO錯誤!" + e.getMessage());
}
}
公共靜態無效writeLog(字串strLog){
System.out.println(strLog);
}
}
包測試.bwl;
導入java.io.File;
導入 java.io.FileInputStream;
導入 java.io.FileNotFoundException;
導入 java.io.FilenameFilter;
導入java.io.IOException;
導入 java.io.InputStream;
導入java.util.Collections;
導入java.util.HashMap;
導入java.util.Map;
導入java.util.Properties;
導入java.util.regex.Pattern;
/**
* 設定資訊管理器
*
* @作者bwl
* @版本1.0
*/
公共類別配置管理器{
/**
* 提供單一實例物件的靜態內部類
*/
私人靜態類別 SingletonHolder {
公共靜態 ConfigManager 實例 = new ConfigManager();
}
/**
* 取得物件實例
* @返回
*/
公共靜態 ConfigManager getInstance() {
返回 SingletonHolder.instance;
}
/**
* 儲存問題清單的Map
*/
私人地圖<字符串,屬性> name2properties;
/**
* 建構方法,請使用getInstance()取得實例
*/
私人配置管理器(){
name2properties = Collections.synchronizedMap(new HashMap<String, Properties>());
doInit();
}
/**
* 初始化方法
*/
私有無效 doInit() {
嘗試 {
文件路徑 = new File("./conf/");
if (!path.exists()) {
System.out.println("ConfilgManager初始化錯誤:src檔案下沒有名為'conf'的資料夾。");
返回;
}
File[] confFiles = path.listFiles(new DirFilter(".*\.properties"));//\
for (int i = 0; i < confFiles.length; i++) {
文件 f = confFiles[i];
if (f.exists() && f.isFile()) {
屬性屬性 = new Properties();
輸入流 = new FileInputStream(f);
屬性.load(is);
name2properties.put(f.getName(), 屬性);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 取得配置項的值
* @param fileName 設定檔的名稱
* @param key 關鍵字的值
* @return 配置項
*/
公有字串 getProperty(字串檔名,字串鍵){
if (fileName == null || fileName.length() == 0) {
返回空值;
}
屬性 prop = name2properties.get(fileName);
if (prop != null) {
返回 prop.getProperty(key);
}
返回空值;
}
/**
* 取得整形的配置項的值
* @param fileName 設定檔的名稱
* @param keyName 金鑰碼的值
* @return 如果正確則回傳數字,否則回傳-1
*/
公用 int getIntProperty(字串檔名, 字串鍵) {
字串值 = this.getProperty(檔案名稱, 鍵);
整數結果=-1;
如果(值==空){
返回結果;
}
嘗試 {
結果 = Integer.parseInt(值);
返回結果;
} catch (異常 e) {
//什麼都不做
}
返回結果;
}
/**
* 屬性過濾檔案的內部類別
*/
類別 DirFilter 實作 FilenameFilter {
/**
* 記錄檔名格式的則對象
*/
私有模式模式;
公共 DirFilter(字串正規表示式) {
模式 = Pattern.compile(regex);
}
公共布爾接受(文件目錄,字串名稱){
returnpattern.matcher(new File(name).getName()).matches();
}
}
公共靜態無效主(字串[] args){
ConfigManager 設定 = ConfigManager.getInstance();
System.out.println(config.getIntProperty("cache.properties", "cache.size") + "");
System.out.println(config.getProperty("javagroups.properties", "bus_name") + "");
}