IO流基础

/**
 * 
 * @author 大家都说名字长不会被发现
 *  1.复制上例中的Student类到本项目中;
    2.在项目目录下创建文件name.txt,并写入以下内容:
    it001,武松,男,22
    it002,林冲,男,20
    it003,卢俊义,男,18
    it004,石宝,男,23
    3.创建MainApp类,包含main()方法
    4.在main()方法中:
    1.定义一个存储Student对象的集合;
    2.循环从文件中读取数据,每次读取一行,并解析每个属性值,封装到一个Student对象中,并将这个对象封装到集合中。
    3.遍历集合,找到要修改的“卢俊义”,并将姓名修改为:“史文恭”。
    同时将数据再次写回到文件中。
    程序结束后,验证文件中的数据是否修改成功
 */

public class HomeTest03 {
    public static void main(String[] args) throws IOException{


        //定义集合来存储对象
        ArrayList<Student> lists = new ArrayList<Student>();
       
            //定义字符读取流
            BufferedReader br = new BufferedReader(new FileReader("name.txt"));


            String len;
            while((len = br.readLine()) != null) {


                //创建Student对象
                Student stu = new Student();


                String[] stuMessageArray = len.split(",");


                //将数组中的数据取出,然后设置到Student对象中
                stu.setId(stuMessageArray[0]);
                stu.setName(stuMessageArray[1]);
                stu.setGender(stuMessageArray[2]);
                stu.setAge(stuMessageArray[3]);


                //添加对象到集合
                lists.add(stu);
            }
            //关流
            br.close();


      


        //打印修改后的数据


        System.out.println("学号\t姓名\t性别\t年龄");


       
            //定义字符写入流
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("name.txt"));


            //循环集合判断元素,修改元素,并将数据重新写入
            for(int i = 0; i < lists.size();i++) {
                //定义字符串拼接对象
                StringBuilder stringBuilder = new StringBuilder();


                //获取对象
                Student stu = lists.get(i);


                //判断元素
                if(stu.getName().equals("卢俊义")) {
                    stu.setName("史文恭");
                }


                System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getGender()+"\t"+stu.getAge());


                //拼接数据
                stringBuilder.append(stu.getId()).append(",")
                .append(stu.getName()).append(",").append(stu.getGender()).append(",").append(stu.getAge());


                //写入数据
                bufferedWriter.write(stringBuilder.toString());
                bufferedWriter.newLine();


            }
            //关流
                bufferedWriter.close();
           
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值