Java SE學習練習題--IO、List 配合使用

一、題目要求
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();
            }
    }
}
發佈了51 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章