注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

享受编码

    的乐趣

 
 
 

日志

 
 

java.util.Properties的應用:setProperty, getProperty, storeToXML, loadFromXML  

2010-01-09 08:25:10|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在我們撰寫java的過程中常需要設定一些外部的參數,譬如說連線的IP位址或都某些路徑的設定,這些參數當然可以直接設定在 .java 的程式碼中,只是這樣每次更改都必須重新 compile 非常不便,所以這篇要介紹的是把 (key, value) 設定在檔案中的方法。

只要透過 java.util.Properties 就可以輕鬆達到我們的目的,之後更改參數不用在程式碼中尋找,全都設定在一份檔案中即可,先說明一下下面的程式碼,首先我們還不知道 java.util.Properties 所能讀取的檔案格式,所以一開始我們先設定幾組參數後利用內建的功能產生 .xml 和 .properties。

以下是程式 Demo:

  1. import java.io.*;
  2. import java.util.Properties;
  3. public class PropertiesDemo {
  4. private static Properties props;
  5. public static void main(String[] args) {
  6. props = new Properties();
  7. // 用props.setProperty("key", "value")設定(key, value)配對
  8. props.setProperty("key1", "value1");
  9. props.setProperty("key2", "中文測試");
  10. // 用 props.list(System.out)在console 印出props中所有的(key, value)配對
  11. // -- listing properties --
  12. // key2=中文測試
  13. // key1=value1
  14. System.out.println("在console 印出props中所有的(key, value)配對");
  15. props.list(System.out);
  16. System.out.println();
  17. // 設定重覆的(key, value)配對會覆蓋掉
  18. // -- listing properties --
  19. // key2=中文測試
  20. // key1=更改value1
  21. System.out.println("印出更改後所有的(key, value)配對");
  22. props.setProperty("key1", "更改value1");
  23. props.list(System.out);
  24. System.out.println();
  25. try {
  26. // 輸出props中所有的(key, value)配對到xml(storeToXML)及txt(store)
  27. // 輸出後Stream不會自動關閉必須手動關閉,否則有可能出錯(不是在()中使用new時)
  28. // storeToXML(OutputStream os, Stirng comment, String encode)
  29. // storeToXML(OutputStream os, Stirng comment) encode預設使用 UTF-8
  30. props.storeToXML(new FileOutputStream("properties.xml"), "storeToXML");
  31. props.store(new FileOutputStream("properties.properties"), "store");
  32. } catch (FileNotFoundException e) {
  33. e.printStackTrace();
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. props.clear();
  38. try {
  39. // props.getProperty(key)讀出(key, value)配對
  40. // props.getProperty(String key, String defaultWhenNotFound)
  41. // props.getProperty(String key) throws exception when not found
  42. System.out.println("props.getProperty(key)讀出(key, value)配對");
  43. props.load(new FileInputStream("properties.properties"));
  44. System.out.println(props.getProperty("key", "test")); // default value test
  45. System.out.println(props.getProperty("key1"));
  46. props.clear();
  47. System.out.println();
  48. } catch (FileNotFoundException e) {
  49. e.printStackTrace();
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. }
  53. try {
  54. // 印出從 properties.xml 讀出的所有(key, value)配對
  55. System.out.println("印出properties.xml讀出的所有(key, value)配對");
  56. props.loadFromXML(new FileInputStream("properties.xml"));
  57. props.setProperty("key3", "new value");
  58. props.list(System.out);
  59. // 將新配對寫回 properties.xml,串流沒出錯
  60. props.storeToXML(new FileOutputStream("properties.xml"), "storeToXML");
  61. } catch (FileNotFoundException e) {
  62. e.printStackTrace();
  63. } catch (IOException e) {
  64. e.printStackTrace();
  65. }
  66. }
  67. }
  68. 輸出結果:
  69. 在console 印出props中所有的(key, value)配對
  70. -- listing properties --
  71. key2=中文測試
  72. key1=value1
  73. 印出更改後所有的(key, value)配對
  74. -- listing properties --
  75. key2=中文測試
  76. key1=更改value1
  77. props.getProperty(key)讀出(key, value)配對
  78. test
  79. 更改value1
  80. 印出properties.xml讀出的所有(key, value)配對
  81. -- listing properties --
  82. key3=new value
  83. key2=中文測試
  84. key1=更改value1
  85. 產生的 properties.properties內容:
  86. #store
  87. #Fri Dec 26 15:23:38 CST 2008
  88. key2=\u4E2D\u6587\u6E2C\u8A66
  89. key1=\u66F4\u6539value1
  90. 使用 store 所產生的文件並不直接支援中文
  91. 所以建議使用 storeToXML
  92. 產生的 properties.xml內容:
  93. <?xml version="1.0" encoding="UTF-8"?>
  94. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  95. <properties>
  96. <comment>storeToXML</comment>
  97. <entry key="key3">new value</entry>
  98. <entry key="key2">中文測試</entry>
  99. <entry key="key1">更改value1</entry>
  100. </properties>
  101. 關鍵字:Properties, setProperty, getProperty, storeToXML, loadFromXML, 參數
  评论这张
 
阅读(2621)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018