Properties是Hashtable類的子類(這里注意,Hashtable的t是小寫,這個類是JDK1.0就有了的,而java的命名規范是從2.0才開始的),是唯一一個能直接和IO流結合使用的集合類。該集合類可以直接從文件讀取數據到集合中,也可以直接把集合中的數據寫入到文件中。一般適用于操作配置文件。使用它時先要import java.util.Properties;。
配置文件key和value之間用冒號[:]和等于號[=]都是可以的.
使用load方法讀取之后直接映射成map
主要有如下方法:
load(); //讀取
store(); //寫
getProperty(); //根據鍵獲取值
setProperty(); //修改對應鍵的值
The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string.
鍵值對只能保存字符串
兩個構造方法:
Properties()
Creates an empty property list with no default values.
Properties(Properties defaults)
Creates an empty property list with the specified defaults.
PropertiesDemo.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Properties;
public class PropertiesDemo {
public static void main(String[] args) throws Exception {
//創建Properties類的對象
Properties pp = new Properties();
//從文件中讀取數據
pp.load(new FileInputStream("config.properties"));
//打印pp對象
System.out.println(pp);
//根據鍵獲取值
Object obj = pp.get("name");
System.out.println(obj);
String name = pp.getProperty("name");
String call = pp.getProperty("call");
String qq = pp.getProperty("qq");
System.out.println("name " + name);
System.out.println("call " + call);
System.out.println("qq " + qq);
//修改元素(鍵值對)的值
pp.setProperty("name", "anxiaohong");
pp.setProperty("qq", "123456789");
//修改后的pp
System.out.println(pp);
//把修改后的文件寫入到文件當中,沒有這個文件的話會新建一個文件,第二個參數是一個string作為描述
//寫完的文件頭會加一個時間,時間上邊是描述的字符串,如果第二個參數是null,就只加一個時間
//以#號開頭,注釋
pp.store(new FileOutputStream("abc.txt"), "hello");
//對map進行遍歷
Set<Object> set = pp.keySet();
for(Object o: set) {
System.out.println(o+"---"+pp.getProperty(o.toString()));
}
}
}
config.properties
name = anhong
call = 123456
qq : 456789
abc.txt
#hello
#Fri Nov 17 20:32:48 CST 2017
qq=123456789
name=anxiaohong
call=123456