qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          使用java讀寫properties文件屬性

           自己定義一個屬性文件:例如prop.properties
            baseFilePath=D\:/kuanter/resource
            tesx=abcd
            我們要做的第一步就是要將文件讀取到Properties類對象中,由于load有一個參數是InputStream,所以我們可以用 InputStream的子類FileInputStream將屬性文件讀取到Properties對象中,知道prop.properties的路徑,我們就用FileInputStream(String name)構造函數:
            Properties prop = new Properties();//屬性集合對象
            FileInputStream fis = new FileInputStream("prop.properties");//屬性文件流
            prop.load(fis);//將屬性文件流裝載到Properties對象中
            1.//獲取屬性值,baseFilePath已在文件中定義
            2.System.out.println("獲取屬性值:baseFilePath=" + prop.getProperty("baseFilePath"));
            3.//獲取屬性值,country未在文件中定義,將在此程序中返回一個默認值,但并不修改屬性文件
            4.System.out.println("獲取屬性值:country=" + prop.getProperty("country", "中國"));
            在保存屬性集合到文件之前,我們還有一件事情就是如何修改和添加新的屬性到屬性集合,這里使用了一個方法就是setProperty(String key, String value),這個方法就是當屬性集合中存在指定的key時,就修改這個key的值,如果不存在,就新建一個key,同樣是通過鍵值關系保存的,但值得注意的是,Properties類繼承自Hashtable,所以也可以用Hashtable的put和putAll方法保存,但強烈反對使用這兩個方法,因為它們允許調用方插入其鍵或值不是 Strings 的項。相反,應該使用 setProperty 方法。如果在“有危險”的 Properties 對象(即包含非 String 的鍵或值)上調用 store 或 save 方法,則該調用將失敗。那好,下面我們就來看看修改、添加和保存屬性的程序:
          //修改baseFilePath的屬性值
          prop.setProperty("baseFilePath", "Boxcode");
          //添加一個新的屬性studio
          prop.setProperty("studio", "Boxcode Studio");
          //文件輸出流
          FileOutputStream fos = new FileOutputStream("prop.properties");
          //將Properties集合保存到流中
          prop.store(fos, "Copyright (c) Boxcode Studio");
          fos.close();//關閉流
            在我們知道如何讀寫一個屬性文件之后,我們仍然還有很多需要注意的問題,因為load和store方法都是按照ISO-8859-1的編碼方式讀寫屬性流文件的,而ILatin1 的字符和某些特殊字符,而對于非Latin1 的字符和某些特殊字符,則要使用與字符和字符串字面值所用的類似轉義序列,以值和元素的形式來表示它們。所以當我們在處理中文時,不可以在直接修改屬性文件時,將中文的值賦予給屬性,而是要在JAVA程序中通過setProperty方法給屬性賦予中文的值,因為這樣store會將中文轉換成 unicode碼,在讀取時系統會將讀取到的unicode碼按系統的編碼打印出來,對于中文系統,通常是GBK碼,這樣中文才能夠正常顯示。

           具體在項目中的屬性文件讀寫
          package TestPropertis;
          //import java.io.FileInputStream;
          //import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream;
          //import java.net.URL;
          import java.util.Properties;
          /**
          * TODO
          * @author admin
          * @date 2012-11-22 下午05:17:28
          */
          public class ReadWirtePropertis {
          public static void main(String[] args) {
          Properties pro = new Properties();//屬性集合對象
          //      URL url = Thread.currentThread().getContextClassLoader().getResource("prop.properties");//獲取項目中文件的路徑
          InputStream path =Thread.currentThread().getContextClassLoader().getResourceAsStream("prop.properties");//獲取路徑并轉換成流
          //      try {
          //          FileInputStream fis = new FileInputStream("屬性文件創建在電腦上");
          try {
          //              pro.load(fis);//將屬性文件流裝載到Properties對象中
          pro.load(path);
          //              fis.close();
          System.out.println(pro.getProperty("baseFilePath"));
          pro.setProperty("shuzi", "1111");//往屬性文件插值
          pro.setProperty("shuzi", "222");//更改屬性值
          System.out.println(pro.getProperty("shuzi"));
          } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          //      } catch (FileNotFoundException e) {
          //          // TODO Auto-generated catch block
          //          e.printStackTrace();
          //      }
          }
          }

          posted on 2013-10-14 10:07 順其自然EVO 閱讀(209) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 湟源县| 黄浦区| 丹巴县| 建德市| 荣成市| 固镇县| 阿克| 长兴县| 息烽县| 辛集市| 琼海市| 庄河市| 林西县| 紫阳县| 手机| 浑源县| 彝良县| 普宁市| 太和县| 鄂托克旗| 新营市| 孝昌县| 山西省| 渝北区| 大丰市| 锦屏县| 临安市| 尼玛县| 炎陵县| 保定市| 博罗县| 甘孜| 横峰县| 吴川市| 昂仁县| 和硕县| 高碑店市| 辽阳县| 闵行区| 永嘉县| 无为县|