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

          當前項目路徑是

          String filepath=System.getProperty("user.dir");

          對下面的程序很有用...

          /**
          * 實現對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 2008.11.14
          */
          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("操作完成");
          ??? }
          }

          posted on 2010-01-17 17:04 飛熊 閱讀(2594) 評論(0)  編輯  收藏 所屬分類: java

          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汽车| 宜宾县| 望奎县| 漳浦县| 肥东县| 日土县| 万安县| 辽阳县| 临桂县| 永清县| 巴林右旗| 伊春市| 凌海市| 朝阳县| 淳安县| 海盐县| 包头市| 石楼县| 天祝| 天镇县| 闵行区| 海盐县| 玛沁县| 什邡市| 句容市| 乌恰县| 深圳市| 霍山县| 麦盖提县| 湖南省| 清流县| 宜宾县| 博客| 蛟河市| 禹州市| 铁岭县| 建阳市| 安陆市| 玛多县| 绥江县| 宽甸|