1
我在新会话中对Java中的文件进行反序列化时遇到问题。反序列化ArrayList
我可以序列化ArrayList到文件,然后在同一个会话中反序列化它,但是,如果我创建一个新的Main对象并尝试反序列化在前一个会话中工作的同一个文件,则代码不起作用。
这是为什么?
这里是我的代码:
public void LoadPersonListFromFile(String Filename)
{
try
{
PersonList = new ArrayList<Person>();
ObjectInputStream in = new ObjectInputStream(new FileInputStream(Filename));
ArrayList<Person> PersonList = (ArrayList<Person>) in.readObject();
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void SavePersonFileToFile(String Filename)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(Filename));
out.writeObject(PersonList);
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
编辑
反序列化似乎是工作,因为如果我做了.size()的列表中LoadPersonListFromFile方法调用,我得到值为2.但是,如果我在LoadPersonListFromFile方法外调用List上的.size()方法,那么.size()显示为0.为什么这会是?我是否需要将反序列化的ArrayList复制到专用字段中?
我有以下私有字段存储的ArrayList在类的顶部:
private ArrayList<Person> PersonList;
EDIT2
得到它的工作。下面是代码:
public void LoadPersonListFromFile(String Filename)
{
try
{
ObjectInputStream in = new ObjectInputStream(new FileInputStream(Filename));
ArrayList<Person> PersonListFromFile = (ArrayList<Person>) in.readObject();
in.close();
PersonList = PersonListFromFile;
}
catch (Exception e)
{
e.printStackTrace();
}
}
你能分享如有异常? – sanbhat 2013-05-13 07:39:57
上述代码有什么问题?看起来很好。 – 2013-05-13 07:40:46
你'人'类实现'Serializable'吗? – 2013-05-13 07:41:50