我目前正在使用GUI进行java项目。我有两种形式。一个用于SignUp,另一个用于LogIn。 SignUp表单会创建一个'客户端'或者'员工'基于用户输入的对象并将其存储在' .ser'文件。 对于我的LogIn,我想通过将对象存储在ArrayList中来反序列化该文件,并从该ArrayList中搜索每个对象中的电子邮件和密码。如果存在,则登录应该成功。 但是,我的代码只是读取文件中的第一个对象,而不是全部。
这是我的简化代码。
try{
ObjectInputStream x = new ObjectInputStream(new FileInputStream("EmployeeList.ser"));
while(true){
try{
Employee a=(Employee) x.readObject();
System.out.println(a);
e1.add(a);
}
catch(EOFException e)
{
e.printStackTrace();
break;
}
}
}
catch(FileNotFoundException e)
{
} catch (IOException ex) {
return ;
} catch (ClassNotFoundException ex) {
Logger.getLogger(loginGUI.class.getName()).log(Level.SEVERE, null, ex);
}
阅读代码:
{{1}}
它只输出文件中的第一个对象。
答案 0 :(得分:1)
outputStream.writeObject()
将替换以前写入的对象。
一种可能的解决方案是将它们添加到带有Client / Employee对象列表的容器类中,并改为序列化/反序列化此容器类。