Java配置檔案Properties的讀取、寫入與更新操作
阿新 • • 發佈:2018-11-12
- /**
- * 實現對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", "[email protected]");
- System.out.println("操作完成");
- }
- }