将对象输出到文件

时间:2012-06-18 03:50:43

标签: java serialization

我正在寻找一种方法将实例化的类,一个Object输出到一个文件。我尝试过使用FileStream,它似乎没有用。经过研究,似乎我需要使用一种称为“序列化”的技术。我完全迷失在这个话题上。有人请为我调试这段代码吗?我有预感到问题正在发生,因为我试图在普通类中序列化一个抽象类。抽象类是java.util.Calendar。

class CalendarL implements java.io.Serializable{
    private static final long serialVersionUID = 1L;

    java.util.Calendar calendar;

    CalendarL (int date, int month, int year){
        calendar.set (Calendar.DATE, date);
calendar.set (Calendar.MONTH, month);
calendar.set (Calendar.YEAR, year);
    }
}

class IO {
    protected CalendarL reader() throws IOException, ClassNotFoundException{
        FileInputStream data = new FileInputStream("data.dat");
        ObjectInputStream dataObject = new ObjectInputStream(data);

        CalendarL calendar = (CalendarL)dataObject.readObject();

        dataObject.close();
        data.close();

        return calendar;
    }


    protected void output(CalendarL calendar) throws IOException, WriteAbortedException, NotSerializableException {
        new FileOutputStream("data.dat").close();

        FileOutputStream data = new FileOutputStream("data.dat");
        ObjectOutputStream dataObject = new ObjectOutputStream(data);

        dataObject.writeObject(calendar);
        dataObject.close();
        data.close();
   }

}

这是我得到的错误:

Exception in thread "main" java.io.NotSerializableException: hotelres.ClientL
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)

1 个答案:

答案 0 :(得分:2)

  

我预感到问题正在发生,因为我正在尝试序列化普通类中的抽象类。抽象类是java.util.Calendar。

预感不正确。序列化实例(而不是类),实例的类不能是抽象类。此外,Calendar实现实现Serializable ... javadoc这样说。