屬性集合java.util.Properties
java.util.Properties集合 extends Hashtable<k, v> implements Map<k, v>
Properties類表示一個持久的屬性集,可以保存在流中,或者從流中加載。是唯一一個和IO流相結合的集合。Properties集合是一個雙列集合,key和value默認都是字符串
方法
方法 | 作用 |
---|---|
void store(OutputStream out, String comments) | 把集合的臨時數據,持久化寫到硬盤存儲 |
void load(Writer writer, String comments) | 把硬盤的文件(鍵值對),讀取到集合中使用 |
store方法使用步驟
- 創建Properties對象,添加數據
- 創建字節輸出流/字符輸出流對象,構造方法中綁定要輸出的目的地
- 使用properties對象的store方法,把集合的臨時數據持久化寫入到硬盤
- 釋放資源
package cn.zhuobo.day14.aboutProperties;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class Demo01Properties {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
properties.setProperty("aaa","11");
properties.setProperty("bbb", "22");
properties.setProperty("ccc", "33");
// 使用字符輸出流
FileWriter fw = new FileWriter("/home/zhuobo/Desktop/dir/prop.txt");
properties.store(fw, "store data");
// 使用字節輸出流的匿名對象
properties.store(new FileOutputStream("/home/zhuobo/Desktop/dir/prop1.txt"), "");
Set<String> keySet = properties.stringPropertyNames();
for (String key : keySet) {
System.out.println(properties.getProperty(key));
}
fw.close();
}
}
鍵值對寫入文件,鍵與值之間使用空格分隔也是和等號一樣的效果,#后面的是注釋
load方法使用
- 創建Properties對象
- 使用Properties對象的load方法讀取保存鍵值對的文件
- 遍歷Properties集合查看
// 創建Properties對象
Properties properties1 = new Properties();
// 使用Properties對象的load方法讀取保存鍵值對的文件
properties1.load(new FileReader("/home/zhuobo/Desktop/dir/prop1.txt"));
// 遍歷Properties集合查看
Set<String> keySet = properties.stringPropertyNames();
for (String key : keySet) {
System.out.println(key + "=" + properties.getProperty(key));
}
該集合有些特有的處理字符串的方法:
方法 | 作用 |
---|---|
Object setProperty(String key, String value) | 調用Hashtable的put方法 |
String getProperty(String key) | 相當於Map中的get方法,通過鍵獲得值 |
Set
|
返回此屬性列表的鍵值,其中該鍵值對應值都是字符串,此方法相當於Map集合的keySet方法 |
package cn.zhuobo.day14.aboutProperties;
import java.util.Properties;
import java.util.Set;
// 注意使用Properties集合特有的處理字符串的方法
public class Demo01Properties {
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty("aaa","11");
properties.setProperty("bbb", "22");
properties.setProperty("ccc", "33");
Set<String> keySet = properties.stringPropertyNames();
for (String key : keySet) {
System.out.println(properties.getProperty(key));
}
*