Java 将多个对象序列化到一个文件并稍后检索它们

Java 将多个对象序列化到一个文件并稍后检索它们,java,serialization,java.util.scanner,Java,Serialization,Java.util.scanner,我试图一次生成一个Students对象,并将一个对象序列化到一个文件中,稍后我想检索一个Students名字和姓氏匹配的对象 这就是我一直试图做的 public static void addtoStudents(String First,String Last) { Student student = new Student(First,Last); ArrayList<Student> student=new ArrayList<&

我试图一次生成一个Students对象,并将一个对象序列化到一个文件中,稍后我想检索一个Students名字和姓氏匹配的对象

这就是我一直试图做的

    public static void addtoStudents(String First,String Last) {

        Student student = new Student(First,Last);
        ArrayList<Student> student=new ArrayList<>();

        try {

                FileOutputStream fop=new FileOutputStream("object.ser");
                ObjectOutputStream oos=new ObjectOutputStream(fop);
                student.add(student);
                oos.writeObject(student);

 } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

}
publicstaticvoidaddtostudents(先字符串,后字符串){
学生=新学生(第一名,最后一名);
ArrayList student=新的ArrayList();
试一试{
FileOutputStream fop=新的FileOutputStream(“object.ser”);
ObjectOutputStream oos=新的ObjectOutputStream(fop);
学生。添加(学生);
oos.书面对象(学生);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
这是检索代码

public static String[] findSomeone(String First,String Last)
{

    try {

            FileInputStream fis=new FileInputStream("object.ser");
            ObjectInputStream ois=new ObjectInputStream(fis);


            ArrayList<Student> student=new ArrayList<>();
            student=(ArrayList<Student>)ois.readObject();

            for(int i=0;i<student.size();i++){
                student.get(i).getFirstname();
                System.out.println(student.get(i).getFirstname());
            }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
        }


    return null;
}
public static String[]findSomeone(字符串第一,字符串最后)
{
试一试{
FileInputStream fis=新的FileInputStream(“object.ser”);
ObjectInputStream ois=新ObjectInputStream(fis);
ArrayList student=新的ArrayList();
student=(ArrayList)ois.readObject();
对于(int i=0;iFrom

确保您的类
Student
实现
java.io.Serializable
接口

比如:


你的问题是什么?这两个
student
的声明是打字错误还是两个声明的变量同名?编辑-因为它似乎在你的代码中无处不在,所以不会编译。不能在同一范围内有两个同名的变量。重命名你的
student
数组列表,
students
似乎是一个不错的选择。如果不是打字错误,你应该使用IDE。这种错误不应该是解决问题的问题,事实上确实如此。我可以序列化单个对象并检索它。我应该让学生申请,然后让管理员检查他们的信息。这只需要使用对象即可。
public class Student implements Serializable {

    private String First;
    private String Last;
    ...

    public Student(String First,String Last) {
      ...
    }
}