4.通过javaIO相关知识对序列化后的文件进行读取,并打印地点在郑州的对象的信息。

 1.设有一个文件,addrinfo.properties,内容如下:

张三=郑州高新区电子商务产业园
李四=北京东单公园
王五=上海外滩
赵六=深圳大芬油画村
孙七=杭州西湖
钱八=广州长隆旅游度假区
周九=郑州大玉米
吴十=青岛栈桥


2.现在需要对文件中的数据进行读取,并封装为相应的拥有两个属性(name,addr)的对

3.将创建好的八个对象都放入一个ArrayList集合中,然后对ArrayList集合进行序列化。
4.通过javaIO相关知识对序列化后的文件进行读取,并打印地点在郑州的对象的信息。

package com.io.properties_deal;

import java.io.*;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Set;

public class Homework1018_02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // 1. 创建properties对象,用作读取properties文件中的内容
        Properties pro = new Properties();
        // 2. 使用properties对象中的 load方法进行文本数据的读取
        pro.load(new FileReader("D:\\addrinfo.properties"));
        // 3. 使用properties对象中的stringPropertyNames方法对 properties对象中的key进行读取
        // 得到一个set对象,用作循环
        Set<String> userNames = pro.stringPropertyNames();

        // 4. 构建一个ArrayList对象,用作存放所有的用户与地址信息对象UserAddr
        ArrayList<UserAddr> userAddrs = new ArrayList<UserAddr>();

        // 5. 对userNames[第3步创建出来的set集合]进行遍历
        for (String userName : userNames) {
            // 6. 将遍历出来的key(userName)与 通过pro.getProperty获取出来的用户地址用作参数
            // 进行UserAddr对象的构建
            UserAddr ua = new  UserAddr(userName,pro.getProperty(userName));
            // 7. 将new出来的对象放入到第4步创建的ArrayList中
            userAddrs.add(ua);
        }

        // 8. 构建序列化流并将 ArrayList放入流中,输出至文件
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\user_info.txt"));
        oos.writeObject(userAddrs);
        oos.close();

        // 9. 构建反序列化流,对文件进行读取与反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\user_info.txt"));
        ArrayList<UserAddr> userAddrFromFile = (ArrayList<UserAddr>) ois.readObject();
        // 10. 对readObject方法返回的ArrayList对象进行遍历
        for (UserAddr userAddrRead : userAddrFromFile) {
            // 11. 判断对象中,地址是否包含“郑州”,如果包含,则输出至控制台
            if (userAddrRead.getAddr().contains("郑州")){
                System.out.println(userAddrRead);
            }
        }
        ois.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值