首页 > 代码库 > java 21 - 14 Properties类

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 =http://www.mamicode.com/ 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集合是个持久的属性集合

java 21 - 14 Properties类