> 文章列表 > java-Properties集合

java-Properties集合

java-Properties集合

目录

    • 1.Properties集合
      • 1.1Properties作为Map集合的使用【应用】
      • 1.2Properties作为Map集合的特有方法【应用】
      • 1.3Properties和IO流相结合的方法【应用】
      • 1.4Properties集合练习【应用】

1.Properties集合

1.1Properties作为Map集合的使用【应用】

  • Properties介绍

    • 是一个Map体系的集合类
    • Properties可以保存到流中或从流中加载
    • 属性列表中的每个键及其对应的值都是一个字符串
  • Properties基本使用

    public class PropertiesDemo01 {public static void main(String[] args) {//创建集合对象
    //        Properties<String,String> prop = new Properties<String,String>(); //错误Properties prop = new Properties();//存储元素prop.put("itheima001", "佟丽娅");prop.put("itheima002", "赵丽颖");prop.put("itheima003", "刘诗诗");//遍历集合Set<Object> keySet = prop.keySet();for (Object key : keySet) {Object value = prop.get(key);System.out.println(key + "," + value);}}
    }
    

1.2Properties作为Map集合的特有方法【应用】

  • 特有方法

    方法名 说明
    Object setProperty(String key, String value) 设置集合的键和值,都是String类型,底层调用 Hashtable方法 put
    String getProperty(String key) 使用此属性列表中指定的键搜索属性
    Set stringPropertyNames() 从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串
  • 示例代码

    public class PropertiesDemo02 {public static void main(String[] args) {//创建集合对象Properties prop = new Properties();//Object setProperty(String key, String value):设置集合的键和值,都是String类型prop.setProperty("itheima001", "佟丽娅");prop.setProperty("itheima002", "赵丽颖");prop.setProperty("itheima003", "刘诗诗");//String getProperty(String key):使用此属性列表中指定的键搜索属性
    //        System.out.println(prop.getProperty("itheima001"));
    //        System.out.println(prop.getProperty("itheima0011"));//        System.out.println(prop);//Set<String> stringPropertyNames():从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串Set<String> names = prop.stringPropertyNames();for (String key : names) {
    //            System.out.println(key);String value = prop.getProperty(key);System.out.println(key + "," + value);}}
    }
    

1.3Properties和IO流相结合的方法【应用】

  • 和IO流结合的方法

    方法名 说明
    void load(Reader reader) 从输入字符流读取属性列表(键和元素对)
    void store(Writer writer, String comments) 将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流
  • 示例代码

    public class PropertiesDemo03 {public static void main(String[] args) throws IOException {//把集合中的数据保存到文件
    //        myStore();//把文件中的数据加载到集合myLoad();}private static void myLoad() throws IOException {Properties prop = new Properties();//void load(Reader reader):FileReader fr = new FileReader("myOtherStream\\\\fw.txt");prop.load(fr);fr.close();System.out.println(prop);}private static void myStore() throws IOException {Properties prop = new Properties();prop.setProperty("itheima001","佟丽娅");prop.setProperty("itheima002","赵丽颖");prop.setProperty("itheima003","刘诗诗");//void store(Writer writer, String comments):FileWriter fw = new FileWriter("myOtherStream\\\\fw.txt");prop.store(fw,null);fw.close();}
    }
    

1.4Properties集合练习【应用】

  • 案例需求

    在Properties文件中手动写上姓名和年龄,读取到集合中,将该数据封装成学生对象,写到本地文件

  • 实现步骤

    • 创建Properties集合,将本地文件中的数据加载到集合中
    • 获取集合中的键值对数据,封装到学生对象中
    • 创建序列化流对象,将学生对象序列化到本地文件中
  • 代码实现

    学生类

    public class Student implements Serializable {private static final long serialVersionUID = 1L;private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\\'' +", age=" + age +'}';}
    }
    

    测试类

    public class Test {public static void main(String[] args) throws IOException {//1.创建Properties集合,将本地文件中的数据加载到集合中Properties prop = new Properties();FileReader fr = new FileReader("prop.properties");prop.load(fr);fr.close();//2.获取集合中的键值对数据,封装到学生对象中String name = prop.getProperty("name");int age = Integer.parseInt(prop.getProperty("age"));Student s = new Student(name,age);//3.创建序列化流对象,将学生对象序列化到本地文件中ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));oos.writeObject(s);oos.close();}
    }