Java 之 Properties集合

1、Properties作为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);
            }
        }
    }

2、Properties作为Map集合的特有方法

  • 特有方法
    方法名说明
    Object setProperty(String key, String value)设置集合的键和值,都是String类型,底层调用 Hashtable方法 put
    String getProperty(String key)使用此属性列表中指定的键搜索属性
    Set<String> 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);
            }
        }
    }

3、Properties和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();
        }
    }

4、Properties集合练习

  • 案例需求

    在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;
          }
      
          @Override
          public 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();
          }
      }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值