这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
Properties
- Properties类是hashtable的子类,它具备map集合的特点,而且它里面存储的键值对都是字符。Properties 可保存在流中或从流中加载。
- Properties是集合和IO技术相结合的集合容器。
- Properties 类表示了一个持久的属性集,可以用于键值对形式的配置文件,在加载数据时,需要数据有固定格式:键=值。
- 比如软件的配置文件:软件的配置信息和数据进行了持久化存储,将配置信息存储到一个文件当中,即配置文件,软件每次打开时,加载配置文件。操作配置文件需要IO流技术。
特点:
- 1.Hashtable的子类,map集合中的方法都可以使用。
- 2.该集合没有泛型。键和值都是字符串。
- 3.他时一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化设备中。键值的来源也可以是持久化设备。
1、Properties [ˈprɒpətiz]作为Map集合使用
- Properties概述:
- 是一个Map体系的集合
- Properties可以保存到流或者从流加载
- 范例:
package test;
import javafx.beans.property.Property;
import java.util.Properties;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
Properties prop = new Properties();
//存储元素
prop.put("001","小黑");
prop.put("002","小白");
prop.put("003","小灰");
Set<Object> keySet = prop.keySet();
for(Object key:keySet) {
Object value = prop.get(key);
System.out.println(key+","+value);
// 003,小灰
// 002,小白
// 001,小黑
}
}
}
2、Properties特有方法
| 方法名 | 说明 |
|---|---|
| Object setProperty(String key, String value) | 设置集合的键和值,都是String类型, 底层调用Hashtable方法 put |
| String getProperty(String key) | 使用此属性列表中指定的键搜索属性 |
Set<String> stringPropertyNames() | 从该属性列表中返回一个不可修改的键集,其中键及其应的值是字符串 |
- 范例:
package test;
import javafx.beans.property.Property;
import java.util.Properties;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
Properties prop = new Properties();
//1,Object setProperty(String key, String value) 设置集合的键和值,都是String类型, 底层调用Hashtable方法 put
prop.setProperty("001","小黑");
/*
public synchronized Object setProperty(String key, String value) {
return put(key, value);
}*/
prop.setProperty("002","小白");
prop.setProperty("003","小灰");
/2,String getProperty(String key) 使用此属性列表中指定的键搜索属性
System.out.println(prop.getProperty("003")); //小灰
System.out.println(prop.getProperty("004")); //null
//3,Set<String> stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其应的值是字符串
Set<String> names = prop.stringPropertyNames();
for(String key:names) {
// System.out.println(key);
// 003
// 002
// 001
String value = prop.getProperty(key);
System.out.println(key+","+value);
// 003,小灰
// 002,小白
// 001,小黑
}
}
}
3、Properties与IO流相结合方法
| 方法名 | 说明 |
|---|---|
| void load(InputStream inStream) | 从输入字节流读取属性列表(键和元素对) |
void load(Reader reader) | 从输入字符流读取属性列表(键和元素对) |
| void store(OutputStream out, String comments) | 将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(InputStream)方法的格式写入输出字节流 |
void store(Writer writer, String comments) | 将此属性列表(键和元索对)写入此Properties表中,以适合使用load(Reader)方法的格式写入输出字符流 |
- 范例
package test;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class Demo {
public static void main(String[] args) throws IOException{
//把集合中的数据保存到文件
myStore();
//把文件中的数据保存到集合
myLood();
}
private static void myLood() throws IOException{
Properties prop = new Properties();
FileReader fr = new FileReader("E:\\test\\java.txt");
//2,void load(Reader reader)
prop.load(fr);
fr.close();
System.out.println(prop); //{003=小灰, 002=小白, 001=小黑}
}
private static void myStore() throws IOException {
Properties prop = new Properties();
prop.setProperty("001", "小黑");
prop.setProperty("002", "小白");
prop.setProperty("003", "小灰");
//4,void store(Writer writer, String comments)
FileWriter fw = new FileWriter("E:\\test\\java.txt");
prop.store(fw,null);
fw.close();
}
}