對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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 明溪县| 南郑县| 金门县| 宝应县| 鹤壁市| 富阳市| 青川县| 报价| 德化县| 新邵县| 新源县| 商洛市| 奉贤区| 巩义市| 新宁县| 光山县| 安义县| 诏安县| 禄劝| 巧家县| 双桥区| 万载县| 南丹县| 贵溪市| 香格里拉县| 蒲城县| 临澧县| 如东县| 安顺市| 普兰店市| 化隆| 仙居县| 新闻| 全南县| 通城县| 中西区| 清新县| 门源| 河北区| 南投县| 达拉特旗|