java 21 - 14 Properties类
类 Properties
Properties
类表示了一个持久的属性集。Properties
可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
注意:Properties是Hashtable的子类,说明是一个Map集合。但是,它后面没有<>,说明它不是泛型类
首先把它当成Map使用看看:
1 Properties prop = new Properties(); 2 3 // 添加元素 4 prop.put("it002", "hello"); 5 prop.put("it001", "world"); 6 prop.put("it003", "java"); 7 8 // System.out.println("prop:" + prop); 9 10 // 遍历集合 11 Set<Object> set = prop.keySet(); 12 for (Object key : set) { 13 Object value = prop.get(key); 14 System.out.println(key + "---" + value); 15 }
Properties类的特殊方法:
A、public Object setProperty(String key,String value):添加元素
B、public Set<String> stringPropertyNames():获取所有的键的集合
C、public String getProperty(String key):获取元素
示例:
1 public static void main(String[] args) { 2 //创建集合对象 3 Properties prop = new Properties(); 4 5 //public Object setProperty(String key,String value):添加元素 6 prop.setProperty("哈士奇", "二哈"); 7 prop.setProperty("萨摩耶", "小萨"); 8 prop.setProperty("加菲猫", "胖子"); 9 10 //public Set<String> stringPropertyNames():获取所有的键的集合 11 Set<String> s = prop.stringPropertyNames(); 12 13 //public String getProperty(String key):获取元素 14 //遍历键集合 15 for(String key : s){ 16 String result = prop.getProperty(key); 17 System.out.println(result);//打印出来的是值 18 System.out.println(key+"----"+result);//打印出来的是键值对 19 } 20 }
Properties集合和IO流的结合使用 (必须是Properties集合)
A、public void load(Reader reader):把文件中的数据读取到集合中
B、public void store(Writer writer,String comments):把集合中的数据存储到文件
首先试下A:public void load(Reader reader):把文件中的数据读取到集合中(文件中的数据必须是键值对的形式《“xxx=yyy”》)
1 private static void myLoad() throws IOException { 2 Properties prop = new Properties(); 3 4 // public void load(Reader reader):把文件中的数据读取到集合中 5 // 注意:这个文件的数据必须是键值对形式 6 Reader r = new FileReader("prop.txt"); 7 prop.load(r); 8 r.close(); 9 10 System.out.println("prop:" + prop); 11 }
prop.txt中的内容是:哈士奇=二哈
萨摩耶=小萨 这样的键值对形式的数据
再试下B:public void store(Writer writer,String comments):把集合中的数据存储到文件
1 private static void myStore() throws IOException { 2 // 创建集合对象 3 Properties prop = new Properties(); 4 5 prop.setProperty("哈士奇", "二哈"); 6 prop.setProperty("萨摩耶", "小萨"); 7 prop.setProperty("加菲猫", "胖子"); 8 9 //public void store(Writer writer,String comments):把集合中的数据存储到文件 10 Writer w = new FileWriter("name.txt"); 11 prop.store(w, "helloworld"); 12 w.close(); 13 }
生成的name.txt文件中,里面的内容也是跟prop.txt中的内容格式一样,都是键值对
实际应用:
在玩单机版游戏时,开始运行游戏,会自动生成一个游戏的数据文件夹。而里面有个文件就是存储你玩的游戏角色所具备的属性
例如:玩三国群英传,你会拥有武将,武将又会拥有武器
那么,当你拥有这个武将的时候,你点击保存,那文件里面就会存储一个键值对:吕布=1
而当你拥有了一把武器后,也会存储一个键值对:“菜刀=1”
。。。Properties集合是个持久的属性集合