package mmboa.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; /** * 讀取properties文件 * @author Qutr */ public class Configuration { private Properties propertie; private FileInputStream inputFile; private FileOutputStream outputFile; /** */ /** * * 初始化Configuration類 */ public Configuration() { propertie = new Properties(); } /** */ /** * * 初始化Configuration類 * * @param filePath * 要讀取的配置文件的路徑+名稱 */ public Configuration(String filePath) { propertie = new Properties(); try { inputFile = new FileInputStream(this.getClass().getResource("/").getPath()+filePath); propertie.load(inputFile); inputFile.close(); } catch (FileNotFoundException ex) { System.out.println("讀取屬性文件--->失敗!- 緣由:文件路徑錯誤或者文件不存在"); ex.printStackTrace(); } catch (IOException ex) { System.out.println("裝載文件--->失敗!"); ex.printStackTrace(); } }// end ReadConfigInfo() /** */ /** * * 重載函數,獲得key的值 * * @param key * 取得其值的鍵 * * @return key的值 */ public String getValue(String key) { if (propertie.containsKey(key)) { String value = propertie.getProperty(key);// 獲得某一屬性的值 return value; } else return ""; }// end getValue() /** */ /** * * 重載函數,獲得key的值 * * @param fileName * properties文件的路徑+文件名 * * @param key * 取得其值的鍵 * * @return key的值 */ public String getValue(String fileName, String key) { try { String value = ""; inputFile = new FileInputStream(fileName); propertie.load(inputFile); inputFile.close(); if (propertie.containsKey(key)) { value = propertie.getProperty(key); return value; } else return value; } catch (FileNotFoundException e) { e.printStackTrace(); return ""; } catch (IOException e) { e.printStackTrace(); return ""; } catch (Exception ex) { ex.printStackTrace(); return ""; } }// end getValue() /** */ /** * * 清除properties文件中全部的key和其值 */ public void clear() { propertie.clear(); }// end clear(); /** */ /** * * 改變或添加一個key的值,當key存在於properties文件中時該key的值被value所代替, * * 當key不存在時,該key的值是value * * @param key * 要存入的鍵 * * @param value * 要存入的值 */ public void setValue(String key, String value) { propertie.setProperty(key, value); }// end setValue() /** */ /** * * 將更改後的文件數據存入指定的文件中,該文件能夠事先不存在。 * * @param fileName * 文件路徑+文件名稱 * * @param description * 對該文件的描述 */ public void saveFile(String fileName, String description) { try { outputFile = new FileOutputStream(fileName); propertie.store(outputFile, description); outputFile.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } }// end saveFile() public static void main(String[] args){ Configuration rc = new Configuration(".\\config\\save.perperties");// 相對路徑 String personnelmail = rc.getValue("personnelmail");// 如下讀取properties文件的值 String presidentmail = rc.getValue("presidentmail"); System.out.println("personnelmail="+personnelmail+"presidentmail="+presidentmail);//如下輸出properties讀出的值 Configuration cf = new Configuration(); String ipp = cf.getValue(".\\config\\test.properties", "ip"); System.out.println("ipp = " + ipp); cf.clear(); cf.setValue("min", "999"); cf.setValue("max", "1000"); cf.saveFile(".\\config\\save.perperties", "test"); Configuration saveCf = new Configuration(); saveCf.setValue("min", "10"); saveCf.setValue("max", "1000"); // saveCf.saveFile(".\\config\\save.perperties"); }// end main() }// end class ReadConfigInfo