http://blog.csdn.net/wjw_java/article/details/7950765 java
package com.io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import java.util.Properties; import java.util.Set; /** * Properties是hashtable的子類,也就是說它具有map集合的特色,並且它裏面存儲的鍵值對都是字符串 * Properties是集合和IO相結合的集合容器 * 該對象的特色能夠用於鍵值對形式的配置開發 * 那麼在加載數據時,須要數據有固定格式,鍵=值 * * p.load(new FileReader("路徑"));//加載配置文件 * p.stote(new FileWriter("路徑"),"");//把修改的信息存儲在配置文件中 * * * @author wjw */ public class Properties_class { public static void main(String[] args) { // setGetProperties(); //duQu(); load_store(); // load_store1(); } /* * Properties類中的load()方法,讀取文件到Properties對象中 * Properties類中的store()方法,將Properties對象中數據存儲到文件中 * * 提醒load,store分別都有字符流,字節流的方法的重載. */ public static void load_store(){ Properties p=new Properties(); FileReader fr=null; FileWriter fw=null; try { fr=new FileReader("g:/java/text.txt"); p.load(fr);//load()方法可經過字符流直接加載文件 p.setProperty("b","8888888888"); fw=new FileWriter("g:/java/text.txt"); p.store(fw,"jack");//將Properties中的信息存儲到文件中 System.out.println(p); p.list(System.out);//將信息打印到控制檯 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(fr!=null){ fr.close(); } } catch (Exception e2) { } try { if(fw!=null){ fw.close(); } } catch (Exception e2) { } } } public static void load_store1(){ Properties p=new Properties(); FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream("g:/java/text.txt"); p.load(fis);//load()方法可經過字符流直接加載文件 //p.remove("lisi"); p.setProperty("a","11111"); fos=new FileOutputStream("g:/java/text.txt"); p.store(fos,"jack");//將Properties中的信息存儲到文件中 System.out.println(p); p.list(System.out);//將信息打印到控制檯 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(fis!=null){ fis.close(); } } catch (Exception e2) { } try { if(fos!=null){ fos.close(); } } catch (Exception e2) { } } } /* * 遍歷Properties類中的鍵值對 */ public static void bianLi(Properties p){ Set<String>set=p.stringPropertyNames(); for(String str:set){ System.out.println("鍵:"+str+"----值:"+p.getProperty(str)); } } /* * 讀取配置文件中的數據放到Properties集合中,這實際上是Properties類中load()方法的原理 */ public static void duQu(){ BufferedReader br=null; Properties p=new Properties(); try { br=new BufferedReader(new FileReader("g:/java/text.txt")); String str=""; String[] split=new String[2]; while(null!=(str=br.readLine())){ split=str.split("=");//解析數據 p.setProperty(split[0],split[1]);//將數據存儲到Properties中 } bianLi(p);//調用遍歷Properties類的方法 } catch (IOException e) { e.printStackTrace(); }finally{ try { if(null!=br){ br.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } /* * Properties類中的getProtertity(),setProtertity()方法 */ public static void setGetProperties(){ Properties p=new Properties(); p.setProperty("zhangsan", "33");//設定Properties類中存放的鍵值對 p.setProperty("lisi", "22"); p.setProperty("wangwu", "3563"); p.setProperty("zhaoliu", "3663"); p.setProperty("lisi","9999");//修改lisi的值,原來的值會被覆蓋掉 System.out.println(p);//直接打印集合可獲取集合信息 String zhi=p.getProperty("lisi");//根據鍵獲取值 System.out.println(zhi); //用原始方法遍歷Properties集合 Set<Object> set=p.keySet(); Iterator<Object> iter=set.iterator(); while(iter.hasNext()){ String str=(String)iter.next(); System.out.println(str+":"+p.getProperty(str)); } System.out.println("---------------------------------------------"); //用Properties類中定義的方法遍歷集合: Set<String>set_str=p.stringPropertyNames(); for(String str_a:set_str){ System.out.println(str_a+":"+p.getProperty(str_a)); } } }