关于#java#的问题:把创建的学生对象录入文件,在需要对信息进行操作时

把创建的学生对象录入文件,在需要对信息进行操作时,读取数据。怎么进行修改啊?

用io的file

img


package managementSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class system {
     public static void main(String[] args) {
            ArrayList<Student> list = new ArrayList<>();
            //创建学生对象
            Student s1 = new Student("202201","李一","男","数据科学与大数据技术","一班","401","2004.1","重庆");
            Student s2 = new Student("202202","李二","男","数据科学与大数据技术","一班","401","2004.4","重庆");
            Student s3 = new Student("202203","李三","男","数据科学与大数据技术","一班","401","2004.7","重庆");
            Student s4 = new Student("202204","李四","男","数据科学与大数据技术","二班","402","2004.7","重庆");
            Student s5 = new Student("202205","李五","女","数据科学与大数据技术","二班","402","2003.9","重庆");
            Student s6 = new Student("202206","李六","男","数据科学与大数据技术","二班","402","2004.5","重庆");
            Student s7 = new Student("202207","李七","女","计算机科学与技术","一班","403","2004.4","重庆");
            Student s8 = new Student("202208","李八","男","计算机科学与技术","一班","403","2004.3","重庆");
            Student s9 = new Student("202209","李九","男","计算机科学与技术","一班","403","2003.1","重庆");
            Student s10 = new Student("202210","李十","男","计算机科学与技术","二班","404","2004.2","重庆");
            Student s11 = new Student("202211","李十一","女","计算机科学与技术","二班","404","2004.3","重庆");
            Student s12= new Student("202212","李十二","女","计算机科学与技术","二班","404","2003.5","重庆");
            Student s13 = new Student("202213","李十三","女","计算机科学与技术","三班","405","2004.6","重庆");
            Student s14 = new Student("202214","李十四","女","计算机科学与技术","三班","405","2004.1","重庆");
            Student s15 = new Student("202215","李十五","女","计算机科学与技术","三班","405","2004.8","重庆");
            //把学生添加到集合
            list .add(s1);
            list .add(s2);
            list .add(s3);
            list .add(s4);
            list .add(s5);
            list .add(s6);
            list .add(s7);
            list .add(s8);
            list .add(s9);
            list .add(s10);
            list .add(s11);
            list .add(s12);
            list .add(s13);
            list .add(s14);
            list .add(s15);
            start:
            while (true) {
                System.out.println("-----------------欢迎来到学生管理系统-------------------");
                System.out.println("1:添加学生信息");
                System.out.println("2:删除学生信息");
                System.out.println("3:修改学生信息");
                System.out.println("4:按专业班级查询学生信息");
                System.out.println("5:按学号查询学生信息");
                System.out.println("6:显示所有学生信息");
                System.out.println("7:退出");
                System.out.println("请输入您的选择:");
                Scanner sc = new Scanner(System.in);
                String choose = sc.next();
                switch (choose) {
                case "1":
                    Add.addStudent(list);
                    break;
                case "2":
                    Delete.deleteStudent(list);
                    break;
                case "3":
                    break;
                case "4":
                    ccSearch.ccSearchStudent(list);
                    break;
                case "5":
                    idSearch.viewStudent(list);
                    break;   
                case "6":
                    View.viewStudent(list);
                    break;
                case "7":
                {
                    System.out.println("退出");
                    break start;
                }
                default:
                    System.out.println("没有这个选项,请重新输入");
                }
            }
     }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7673223
  • 这篇博客你也可以参考下:使用file把文件读取到浏览器并用进度条显示
  • 以下回答来自chatgpt:

    针对您的问题,您需要使用Java的IO流将创建的学生对象录入到文件中,并且能够在需要对其信息进行操作时进行读取,同时还需要实现对文件中数据的修改操作。

    具体步骤如下:

    1. 创建一个Student类,包含各种学生属性的定义(姓名、学号、年龄等等),并且实现Serializable接口,以便在写入文件时可以顺利进行对象序列化,代码如下:
    import java.io.Serializable;
    
    public class Student implements Serializable{
        private String name;
        private int id;
        private int age;
    
        public Student(String name, int id, int age) {
            this.name = name;
            this.id = id;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public int getId() {
            return id;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public void setAge(int age) {
            this.age = age;
        }   
    }
    
    1. 创建一个操作文件的类,用于存储、读取以及修改学生对象数据。首先,需要使用File类创建一个指向文件的对象,然后使用ObjectOutputStream将学生对象写入文件中。
    import java.io.*;
    
    public class StudentFile {
        private File file;
    
        public StudentFile(String filePath) {
            file = new File(filePath);
        }
    
        public void save(Student student) {
            try {
                ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
                out.writeObject(student);
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public Student load() {
            try {
                ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
                Student student = (Student) in.readObject();
                in.close();
                return student;
            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public void update(Student newStudent) {
            try {
                Student oldStudent = load();
                ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
                out.writeObject(newStudent);
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    1. 在主函数中进行测试。首先是创建一个学生对象,并通过StudentFile的save方法将这个对象存储到文件中。然后,再通过StudentFile的load方法读取存储在文件中的学生对象,测试读取是否成功。最后,调用StudentFile的update方法进行学生对象数据的修改测试。
    public class Main {
        public static void main(String[] args) {
            // 创建学生对象并存储到文件
            Student student1 = new Student("张三", 1001, 20);
            StudentFile fileHelper = new StudentFile("D://Student.txt");
            fileHelper.save(student1);
    
            // 从文件中读取学生对象
            Student student2 = fileHelper.load();
            System.out.println("学生姓名:" + student2.getName());
            System.out.println("学生学号:" + student2.getId());
            System.out.println("学生年龄:" + student2.getAge());
    
            // 修改学生对象数据
            Student student3 = new Student("李四", 1002, 22);
            fileHelper.update(student3);
            Student student4 = fileHelper.load();
            System.out.println("修改后学生姓名:" + student4.getName());
            System.out.println("修改后学生学号:" + student4.getId());
            System.out.println("修改后学生年龄:" + student4.getAge());
        }
    }
    

    以上就是一种基于Java IO流实现将学生对象写入文件并进行读取和修改的解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^