public String getProfileString( String file, String section, String variable, String defaultValue,Logger log) throws IOException { String strLine, value = ""; BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new FileReader(file)); boolean isInSection = false; Pattern p; Matcher m; while ((strLine = bufferedReader.readLine()) != null) { strLine = strLine.trim(); strLine = strLine.split("[;]")[0]; p = Pattern.compile("\\[\\s*.*\\s*\\]"); m = p.matcher((strLine)); if (m.matches()) { p = Pattern.compile("\\[\\s*" + section + "\\s*\\]"); m = p.matcher(strLine); if (m.matches()) { isInSection = true; } else { isInSection = false; } } if (isInSection == true) { strLine = strLine.trim(); String[] strArray = strLine.split("="); if (strArray.length == 1) { value = strArray[0].trim(); if (value.equalsIgnoreCase(variable)) { value = ""; return value; } } else if (strArray.length == 2) { value = strArray[0].trim(); if (value.equalsIgnoreCase(variable)) { value = strArray[1].trim(); return value; } } else if (strArray.length > 2) { value = strArray[0].trim(); if (value.equalsIgnoreCase(variable)) { value = strLine.substring(strLine.indexOf("=") + 1).trim(); return value; } } } } } catch(IOException e) { log.error("讀取設定檔出錯"+e.toString()); e.printStackTrace(); } finally { bufferedReader.close(); } return defaultValue; }