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);
}
}
}