附加时将对象写入文件

时间:2013-08-14 06:07:08

标签: java fileinputstream fileoutputstream objectinputstream objectoutputstream

我创建了一个注册库系统成员的程序。存储数据我已经使用了文本文件并读/写我实现了序列化。

我的问题是当我注册一个成员并尝试注册另一个成员时,第二个成员记录将不会被保存。要附加写入文件,我也使用了关键字“true”。

这就是我所做的:

//Am writing the object to a file

   public void RegisterMembers(Members object) {
        try{

        FileOutputStream write=new FileOutputStream("Memberships.txt",true);
        ObjectOutputStream writeFile=new ObjectOutputStream(write);

        writeFile.writeObject(object);
        writeFile.flush();
        writeFile.close();

        }catch(Exception e){
              Frame frame=new Frame();
            JOptionPane.showMessageDialog(frame,"Storage file not found");
        }


}


   //Method to read from the file
   public void readMemberships() throws FileNotFoundException, IOException,   ClassNotFoundException{
             Person object;


                FileInputStream read=new FileInputStream("Memberships.txt");
                ObjectInputStream readFile=new ObjectInputStream(read);

               object=(Person)readFile.readObject();

            System.out.println(object);



    }

//Here is a piece of code which is in the gui frame which i implemented
       Members newMember=new   Members(firstName,initials,birthDay,birthMonth,birthYear,Gender,memberid,address,tele,membershipType,paymentType);

       newMember.RegisterMembers(newMember);  //calls the 2 methods

       newMember.readMemberships();

这里的错误似乎是什么?我希望它在写作时附加。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

我认为我创建的主题(现在已经解决)正是您所寻找的。

“你不能附加到使用ObjectOutputStream创建的现有文件,至少不会毫不费力。有一个技巧可以扩展ObjectOutputStream并覆盖`writeStreamHeader()方法,以便不写第二个流头时间(...)“ - 由EJP回答

请在这里查看我的主题:

您还可以查看以下链接

这是你在找什么?