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