Java SE学习练习题--IO、List 配合使用

时间:2023-02-23 13:46:52

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

二、代码思路
1、创建Student JavaBean对象
2、使用BufferedReader 读取数据
3、将数据设置到JavaBean对象中
4、将对象添加到集合
5、将数据从集合中取出
6、使用BufferedWriter 将数据写入到目标文件

三、代码实现

package cn.itcast.javaseday10;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/** * * @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) {

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

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

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

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

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

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

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //打印修改后的数据

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

        try {
            //定义字符写入流
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("Student.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.getNumber()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge());

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

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

            }
            //关流
                bufferedWriter.close();
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
    }
}