Properties属性集
它继承自hashtable类,所以也是键值对形式存储数据的双列集合,且键和值都是一个字符串,我们要注意哈,hashmap和hashtable也继承自map接口,但是hashmap是用来取代hashtable的,因为hashtabl线程不安全,键值对都不能为null之类的
它是唯一一个和io流结合的集合
- 我们可以使用propperties集合中的store()方法把集合中的临时数据持久化写入到硬盘存储.
- 我们也可以使用properties集合中的load()方法把硬盘中保存的文件(内容必须是键值对的哈),读取到集合中使用
- 对于store()方法的举例:
/**
* 将properties集合中存储的临时数据保存到硬盘中
* public void store(OutputStream out, String comments)
* public void store(Writer writer, String comments)
* 参数:
* OutputStream out:字节输出流,不能写入中文
* Writer writer: 字符输出流,随便写啥都行
* String comments: 注释,用于解释说明我保存的文件是干啥的
* 注意这个注释不能使用中文,会产生乱码,因为它默认是unicode编码,一般使用空字符串
* 使用步骤:
* 1. 创建properties集合对象,添加数据
* 2. 创建字节/字符输出流对象,构造方法中绑定要输出的目的地
* 3. 使用properties集合中的store方法把集合中的临时数据持久化写入到硬盘中
* 4. 关闭流
*/
private static void show1() {
//1. 创建properties集合对象,添加数据
Properties prop = new Properties();
prop.setProperty("fan1", "18");
prop.setProperty("fan2", "19");
prop.setProperty("fan3", "20");
prop.setProperty("fan4", "21");
//创建字节/字符输出流对象,构造方法中绑定要输出的目的地,我就放在项目中
FileWriter fw = null;
try {
fw = new FileWriter("prop.txt");
//3. 使用properties集合中的store方法把集合中的临时数据持久化写入到硬盘中
prop.store(fw,"save_data");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **对于load()方法的举例: **
/**
* public void load(InputStream inStream): 不能读取含有中文的键值对
* public void load(Reader reader):能读取含有中文的键值对
* 注意:
* 1. 键值对之间的连接符一般都是=
* 2. 我们可以用#进行注释,#修饰的内容不会被读取
* 3. 键值对都默认是字符串,不用加引号
*
*/
private static void show2() {
//1.创建properties对象
Properties prop = new Properties();
//2.创建输入流对象
FileReader fr = null;
try {
fr = new FileReader("prop.txt");
//读取数据到集合对象中
prop.load(fr);
//遍历集合
Set<String> names = prop.stringPropertyNames();
for (String s : names) {
String value = prop.getProperty(s);
System.out.println(s + ": " + value);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭流
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
因为properties的键值对都是字符串类型的,所以它其中会有一些操作字符串的特殊的方法
- public Object setProperty(String key, String value), 调用Hashtable方法put存储数据到集合中.
- public String getProperty(String key, String defaultValue, 通过键获取值,就相当于map集合中的get(key)方法.
- public Set stringPropertyNames(), 从此属性列表返回一组不可修改的键,就相当于map集合中的keyset()方法.
- **对于操作字符串方法的举例: **
private static void show() {
//创建properties集合对象
Properties prop = new Properties();
//向集合中添加数据
prop.setProperty("fan1", "18");
prop.setProperty("fan2", "19");
prop.setProperty("fan3", "20");
prop.setProperty("fan4", "21");
//遍历集合
Set<String> names = prop.stringPropertyNames();
for (String s : names) {
System.out.println(s + ": " + prop.getProperty(s));
}
}