Java配置文件Properties的讀取、寫入與更新操作

jopen 10年前發布 | 14K 次閱讀 Java開發 Properties

/**

  • 實現對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("操作完成"); } }</pre>來自:http://blog.csdn.net/thl331860203/article/details/7239937
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!