Properties
一、它的對象表示一個持久的屬性集java
屬性集:屬性名稱和屬性值的對應關係,其實仍是一個雙列集合ide
持久的:能夠保存到流中,也能夠從流中讀取spa
二、Properties存儲的鍵和值都是字符串類型code
三、是Hashtable的子類,因此能夠當作普通的Map使用對象
四、特有方法:blog
一、getProperty(String propertyName):根據一個字符串類型的屬性名稱,獲取一個對應的屬性值 內存
注意必須兩個參數都是字符串字符串
二、setProperties(String propertyName, String propertyValue):將一個屬性名和對應的屬性值添加到當前對象中get
三、stringPropertyNames():獲取當前屬性集對象中的全部屬性名稱的Set集合同步
至關於keySet()
四、可使用entrySet()方法,和Map同樣的遍歷方式
五、和文件的交互方式
load(InputStream is)
Load(Reader r) 二者都是從流中獲取配置文件的信息,到內存的properties對象中,造成雙列集合 配置文件必須是properties格式的文件,且文件內容格式: 屬性名=屬性值
store(OutputStream os)
store(Writer w) 二者都是將內存中的Properties對象中鍵值對信息,寫出到流中
說明:不管是os仍是w,關聯的都是對應的配置文件
六、注意:
使用對象修改屬性值後,文件的值不會變化,由於此時只修改了內存中的屬性值,必須調用store方法同步到文件
調用store方法時第二個參數是修改屬性的理由,若是沒有寫null,若是有必須純英文
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
import java.io.FileInputStream; import java.io.FileWriter; import java.util.Properties; public class Demo01 { public static void main(String[] args) throws Exception { Properties p = new Properties(); FileInputStream fis = new FileInputStream("config.properties"); p.load(fis); System.out.println(p); p.setProperty("name", "ww"); p.setProperty("job", "IT"); System.out.println(p); System.out.println(p.getProperty("name")); FileWriter fw = new FileWriter("config.properties"); p.store(fw, "update name qq to ww, job it to IT");//必須調用store方法才能寫入 } }
IO中保證流對象關閉的標準格式
一、若是知道怎麼處理異常,就使用try...catch,代碼能夠正常運行下去。不知道怎麼處理則使用throws進行聲明,當前代碼會中止運行。
二、Jdk1.7之前
格式:
//流對象1的聲明 //流對象2的聲明//在外面聲明擴大使用範圍 try { //流對象1的建立和使用 //流對象2的建立和使用 }finally {//爲了讓流對象1的關閉不影響到2的關閉,嵌套try...finally try { //流對象1的關閉 }finally { //流對象2的關閉 } }
三、jdk1.7之後 格式:
try { //流對象的建立 }{ //流對象的使用 }
使用後不需手動關閉,這個格式已經自動關閉流對象