如何使用XMLdecoder从XML序列化文件中获取所有对象?

时间:2013-11-29 14:26:17

标签: java serialization

我有一个使用自定义SinglyLinkedList的自定义Stack。 我想序列化Stack中的对象并对它们进行反序列化。

对于序列化部分,我使用了这种方法:

public void serializeToFile(Stack oStack, String fileName) throws FileNotFoundException, UnsupportedEncodingException, IOException{

    FileOutputStream os = new FileOutputStream(fileName);
    XMLEncoder encoder = new XMLEncoder(os);

    while(!oStack.isEmpty()){
        encoder.writeObject(oStack.pop());           
    }
    encoder.close();
}

它似乎工作正常,生成一个又一个对象的文件。 问题是如何将所有这些对象(反序列化)返回到堆栈(我自己定义的堆栈)?

我想是这样的:

public Stack deserializeFromFile(String fileName) throws FileNotFoundException{

    Stack oStack = new Stack();

    FileInputStream is = new FileInputStream(fileName);
    XMLDecoder decoder = new XMLDecoder(is);

    oStack.push(decoder.readObject());

    return oStack;
}

但这只需要第一个对象。有没有办法按对象反序列化对象直到eof?我还有其他选择吗? 谢谢!

0 个答案:

没有答案