Java 将多个对象序列化到一个文件并稍后检索它们
我试图一次生成一个Students对象,并将一个对象序列化到一个文件中,稍后我想检索一个Students名字和姓氏匹配的对象 这就是我一直试图做的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<&
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) {
...
}
}