package cn.zhozuohou;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
/*
*一、 Properties Properties Properties?--------数据持久化储存!
*
*二、作用:
*1.可以做到集合的数据持久存储。
*2.它是map接口的实现类, 可以使用map类的方法。 但是它没有泛型,规定建类型为字符串。
*3.在开发中, 可以连接数据库。先了解一些基本用法!
*
* 三、方法
*
* 1.存储获取键值对。
*
* a.new 对象
* b.setProperty();设置键值
* c.getProperty();获取键值
* d.增强for循环,迭代。 遍历集合。
*
* 2.集合特有方法
*
* load 【 把文件的键值对加载到集合中 !】
*
* 1.创建集合 Properties a2=new Properties();
* 2.新建一个文本文件, 后缀修改为.Properties,写入键值对。
* 3.调用集合的load方法! 如果不调用,只会获得一个空集合!
* 4.关闭流
* 5.输出 值!
*
* 3.store 方法 【写入键值对!】
*
* 1.要使用,先创建! Properties a1=new Properties();
* 2.setProperty 输入值!
* 3.字符流 在文件中写入内容!
* 4.调用 properties方法!
* 5.关闭流!
*/
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
run01();
run02();
run03();
}
//3.store 方法!
private static void run03() throws IOException{
//1.要使用,先创建!
Properties a1=new Properties();
//2.setProperty 输入值!
a1.setProperty("name", "周旭峰");
a1.setProperty("age", "20");
a1.setProperty("email", "45645465@qq.com");
//3.字符流 在文件中写入内容!
FileWriter a2=new FileWriter("d:\\game\\a.properties");
//4.调用 properties方法!
a1.store(a2,"the reason"); //第二个参数经常忽略!
//5.关闭流!
a2.close();
}
//2.load 把文件的键值对加载到集合中
private static void run02()throws IOException {
//1.创建对象
Properties a2=new Properties();
//2.创建文本 并修改为.properties格式!
FileReader a1=new FileReader("d:\\game\\a.properties");
//3.调用集合的load方法! 如果不调用,只会获得一个空集合!
a2.load(a1);
//4.关闭流
a1.close();
//5.输出 值
System.out.println(a2);
}
//1.存储获取键值。
private static void run01() {
//1.创建对象
Properties a1=new Properties();
//2.调用对象的方法 setProperties("","");【注意!】这里是字符串的形式!设置键值!
a1.setProperty("a", "1");
a1.setProperty("b", "2");
a1.setProperty("c", "3");
System.out.println(a1);
String value =a1.getProperty("c"); //由 键 获取值!
System.out.println(value);
//增强for 循环方式 //3.获取 设置的键值 两种方式!1.for循环增强! 2.迭代方式!
Set<String>set=a1.stringPropertyNames();
for (String key : set)
{
System.out.println(key+"="+a1.getProperty(key));
}
System.out.println("===========");
//迭代的方式! 效果一样的!
for (Iterator it = set.iterator(); it.hasNext();)
{
String key = (String) it.next();
System.out.println(key+"="+a1.getProperty(key)); //4.getProperties();获取键所对应的值!
}
}
}