1. 程式人生 > >Java學習筆記31(IO:Properties類)

Java學習筆記31(IO:Properties類)

文本 字符串 存在 設備 操作 筆記 開頭 read 無法

Properties類,表示一個持久的j集,可以存在流中,或者從流中加載

  是Hashtable的子類 map集合的方法都能用

  用途之一:在開發項目中,我們最後交給客戶的是一個編譯過的class文件,客戶是無法操作源碼的,當我們鏈接數據庫時,需要在源碼中寫數據庫名,密碼,那麽當客戶需要更換數據庫或者改密碼時,就需要在源碼中更改,這是非常不方便的,因此就用到這個類,在外部創建一個文件,文件中寫上數據庫名,密碼,然後java代碼讀這個文件,這樣客戶就可以直接更改這個文件的內容來達到目的,方便操作。

  Properties用法:

package com.zs.Demo;

import
java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import java.util.Set; public class Dmeo3 { public static void main(String[] args) { try { fun1(); fun2(); } catch (IOException e) { e.printStackTrace(); } }
//關於Properties集合添加元素,獲得數據,遍歷數據 private static void fun2() throws IOException { FileOutputStream fo=new FileOutputStream("d:\\ch.properties"); Properties p=new Properties(); //給p對象添加元素,鍵-值 p.setProperty("name", "張三"); p.setProperty("age", "18"); p.setProperty(
"password", "10010"); //map集合添加元素方法也能用 p.put("sex", "男"); //store方法將properties表中的屬性列表寫入輸出字符 p.store(fo,""); fo.close(); //stringPropertyNames()將集合中的鍵存入一個set集合 Set<String> set = p.stringPropertyNames(); //遍歷set集合 for (String s : set) { System.out.println(s+":"+p.get(s)); /*age:18 name:張三 password:10010*/ } System.out.println(p);//{age=18, password=10010, name=張三} 結果是無序的 } private static void fun1() throws IOException { Properties p=new Properties(); FileInputStream f=new FileInputStream("e:\\workspace\\d33\\src\\user.properties"); //load方法,將文件中的鍵值對加載到集合中 p.load(f); f.close(); System.out.println(p);//{password="1008611", name="張三"} } }

流操作規律總結:

  流對象很多 解決問題(處理設備上數據)到底用哪兒個流

    源:InputStream Reader

    目的地:OutputStream Writer

  明確要操作的文件是字節文件還是文本

    字節:InputStream OutputStream

    文本:Reader Writer

  明確數據所在的具體設備:

    源設備:硬盤,文件file開頭

    內存:數組,字符串

關於讀取,In/Output的認識:

  字節在內存中(In) 在內存外(磁盤上)(Out)

  內存讀(Reader)磁盤上的數據就是輸入(Input) 內存中的數據寫到(Writer)磁盤中就是輸出(Output)

  

Java學習筆記31(IO:Properties類)