我有一个使用自定义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?我还有其他选择吗? 谢谢!