在java中反序列化对象

时间:2018-05-21 17:51:23

标签: java serialization io deserialization

我目前正在使用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}}

它只输出文件中的第一个对象。

1 个答案:

答案 0 :(得分:1)

outputStream.writeObject()将替换以前写入的对象。

一种可能的解决方案是将它们添加到带有Client / Employee对象列表的容器类中,并改为序列化/反序列化此容器类。