1java寫入propertieshtml
/** * 實現對Java配置文件Properties的讀取、寫入與更新操做 */ package test; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Properties; /** * @author * @version */ public class SetSystemProperty { //屬性文件的路徑 static String profilepath="mail.properties"; /** * 採用靜態方法 */ private static Properties props = new Properties(); static { try { props.load(new FileInputStream(profilepath)); } catch (FileNotFoundException e) { e.printStackTrace(); System.exit(-1); } catch (IOException e) { System.exit(-1); } } /** * 讀取屬性文件中相應鍵的值 * @param key * 主鍵 * @return String */ public static String getKeyValue(String key) { return props.getProperty(key); } /** * 根據主鍵key讀取主鍵的值value * @param filePath 屬性文件路徑 * @param key 鍵名 */ public static String readValue(String filePath, String key) { Properties props = new Properties(); try { InputStream in = new BufferedInputStream(new FileInputStream( filePath)); props.load(in); String value = props.getProperty(key); System.out.println(key +"鍵的值是:"+ value); return value; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 更新(或插入)一對properties信息(主鍵及其鍵值) * 若是該主鍵已經存在,更新該主鍵的值; * 若是該主鍵不存在,則插件一對鍵值。 * @param keyname 鍵名 * @param keyvalue 鍵值 */ public static void writeProperties(String keyname,String keyvalue) { try { // 調用 Hashtable 的方法 put,使用 getProperty 方法提供並行性。 // 強制要求爲屬性的鍵和值使用字符串。返回值是 Hashtable 調用 put 的結果。 OutputStream fos = new FileOutputStream(profilepath); props.setProperty(keyname, keyvalue); // 以適合使用 load 方法加載到 Properties 表中的格式, // 將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流 props.store(fos, "Update '" + keyname + "' value"); } catch (IOException e) { System.err.println("屬性文件更新錯誤"); } } /** * 更新properties文件的鍵值對 * 若是該主鍵已經存在,更新該主鍵的值; * 若是該主鍵不存在,則插件一對鍵值。 * @param keyname 鍵名 * @param keyvalue 鍵值 */ public void updateProperties(String keyname,String keyvalue) { try { props.load(new FileInputStream(profilepath)); // 調用 Hashtable 的方法 put,使用 getProperty 方法提供並行性。 // 強制要求爲屬性的鍵和值使用字符串。返回值是 Hashtable 調用 put 的結果。 OutputStream fos = new FileOutputStream(profilepath); props.setProperty(keyname, keyvalue); // 以適合使用 load 方法加載到 Properties 表中的格式, // 將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流 props.store(fos, "Update '" + keyname + "' value"); } catch (IOException e) { System.err.println("屬性文件更新錯誤"); } } //測試代碼 public static void main(String[] args) { readValue("mail.properties", "MAIL_SERVER_PASSWORD"); writeProperties("MAIL_SERVER_INCOMING", "327@qq.com"); System.out.println("操做完成"); } }
如下是本身寫的腳本:java
package TEST; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; public class WritePro { //static String profilepath ="config.properties"; static Properties props=GetProperties.getproperties(); public static void writeProperties(String keyname,String keyvalue) { try { // 調用 Hashtable 的方法 put,使用 getProperty 方法提供並行性。 // 強制要求爲屬性的鍵和值使用字符串。返回值是 Hashtable 調用 put 的結果。 OutputStream fos = new FileOutputStream("D:\\config.properties"); //FileOutputStream直接能夠傳入文件路徑纔可寫入,讀配置文件也是同理(若是粘貼的配置文件維護的不全面,那得用存放路徑,全面的文件) GetProperties.getproperties().setProperty(keyname, keyvalue); // 以適合使用 load 方法加載GetProperties.getproperties()到 Properties 表中的格式, // 將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流 props.store(fos, "寫入新鍵值"); } catch (IOException e) { e.printStackTrace(); System.err.println("屬性文件更新錯誤"); } } }
package TEST; public class SelectKey_value { public static void main(String args[]){ WritePro.writeProperties("username", "YANLI498"); WritePro.writeProperties("userpwd", "iH6B8i9z"); WritePro.writeProperties("url", "http://soasadmin-stg.paic.com.cn/admin/admin/login.html"); System.out.println("寫入正確"); } }
package TEST; import java.io.BufferedInputStream; import java.io.InputStream; import java.util.Properties; import seleniumtest.apiTest; public class GetProperties { public static Properties getproperties() { Properties pro=new Properties(); //pro.setProperty("url","https://soasadmin-stg.paic.com.cn/admin/admin/index.html"); //pro.setProperty("username", "YANLI498"); //pro.setProperty("userpwd", "iH6B8i9z"); // String Str1="hello 123"; // InputStream in=new FileInputStream // ("D:\\myselenium\\config.properties"); InputStream in=null; try { in = new BufferedInputStream(apiTest.class.getResourceAsStream("/properties/config.properties")); pro.load(in); }catch(Exception e){ e.getStackTrace(); } return pro; } }
注:修改配置文件,SRC下的都是屬於源文件,即不對源文件進行修改,另外必須通過加載輸入流,再定義輸入出流,給配置文件添加新的值,再保存STORE到配置文件(經過輸出流);若是不通過輸入流,直接經過輸出流來存儲,則會覆蓋配置文件中原來的東西api