java Properties的用法

劍握在手發表於2013-11-21

Properties是一個特殊的Map,因為和IO流牽扯到了一塊……

 

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

public class PropertiesDemo {

 /**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {

  /*
   * Map
   *  |--Hashtable
   *   |--Properties:
   *
   * Properties集合:
   * 特點:
   * 1,該集合中的鍵和值都是字串型別。
   * 2,集合中的資料可以儲存到流中,或者從流獲取。
   *
   * 通常該集合用於操作以鍵值對形式存在的配置檔案。
   *
   *
   */
  
//  methodDemo_4();
//  myLoad();
  
  test();
 }
 
 
 //對已有的配置檔案中的資訊進行修改。
 /*
  * 讀取這個檔案。
  * 並將這個檔案中的鍵值資料儲存到集合中。
  * 在通過集合對資料進行修改。
  * 在通過流將修改後的資料儲存到檔案中。
  */
 public static void test() throws IOException{
  //讀取這個檔案。
  File file = new File("info.txt");
  if(!file.exists()){
   file.createNewFile();
  }
  FileReader fr = new FileReader(file);
  
  
  
  
  //建立集合儲存配置資訊。
  Properties prop = new Properties();
  
  //將流中資訊儲存到集合中。
  prop.load(fr);
  
  prop.setProperty("wangwu", "16");
  
  
  
  FileWriter fw = new FileWriter(file);
  
  prop.store(fw,"");
  
//  prop.list(System.out);
  
  fw.close();
  fr.close();
  
  
  
 }
 
 
 
 //模擬一下load方法。
 public static void myLoad() throws IOException{
  
  Properties prop  = new Properties();
  
  BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
  
  String line = null;
  
  while((line=bufr.readLine())!=null){
   
   if(line.startsWith("#"))
    continue;
   
   String[] arr = line.split("=");
   
//   System.out.println(arr[0]+"::"+arr[1]);
   prop.setProperty(arr[0], arr[1]);
  }
  
  prop.list(System.out);
  
  bufr.close();
  
 }
 
 public static void methodDemo_4() throws IOException { 
  
  Properties prop  = new Properties();
  
  //集合中的資料來自於一個檔案。
  //注意;必須要保證該檔案中的資料是鍵值對。
  //需要使用到讀取流。
  FileInputStream fis = new FileInputStream("info.txt");
  
  //使用load方法。
  prop.load(fis);
  
  prop.list(System.out);
  
  
  
 }

 public static void methodDemo_3() throws IOException {
  Properties prop  = new Properties();
  
  //儲存元素。
  prop.setProperty("zhangsan","30");
  prop.setProperty("lisi","31");
  prop.setProperty("wangwu","36");
  prop.setProperty("zhaoliu","20");
  
  //想要將這些集合中的字串鍵值資訊持久化儲存到檔案中。
  //需要關聯輸出流。
  FileOutputStream fos = new FileOutputStream("info.txt");
  
  //將集合中資料儲存到檔案中,使用store方法。
  prop.store(fos, "info");
  
  fos.close();
  
 }

 /**
  * 演示Properties集合和流物件相結合的功能。
  */
 
 public static void methodDemo_2(){
  Properties prop  = new Properties();
  
  //儲存元素。
//  prop.setProperty("zhangsan","30");
//  prop.setProperty("lisi","31");
//  prop.setProperty("wangwu","36");
//  prop.setProperty("zhaoliu","20");
 
  prop = System.getProperties();
  prop.list(System.out);
 }
 
 /*
  * Properties集合的存和取。
  */
 
 public static void propertiesDemo(){
  //建立一個Properties集合。
  
  Properties prop  = new Properties();
  
  //儲存元素。
  prop.setProperty("zhangsan","30");
  prop.setProperty("lisi","31");
  prop.setProperty("wangwu","36");
  prop.setProperty("zhaoliu","20");
  
  //修改元素。
  prop.setProperty("wangwu","26");
  
  //取出所有元素。
  Set<String> names = prop.stringPropertyNames();
  
  for(String name : names){
   String value = prop.getProperty(name);
   System.out.println(name+":"+value);
  }
 }
}

相關文章