Java反序列化時報異常java.io.EOFException
阿新 • • 發佈:2019-02-05
問題
第一種解決辦法
在寫完物件後,加一句 oos.writeObject(null); 插入null是用來判斷是否讀取到結尾。oos是ObjectOutputStream例項。
然後讀物件的時候,使用while ((obj = ois.readObject()) != null),來判斷再次讀取一個物件,判定物件是否是空,如果不為null繼續讀取,如果為null停止讀取。
oos.writeObject(null);
第二種解決辦法
將若干個物件(數量不定)都裝入 一個容器中(如:ArrayList之類的),然後寫物件的時候,將該容器寫入。
讀取的時候,讀取出容器,然後再遍歷容器,取出自己所需的物件。
Person person = new Person(1234, "wang");
Person person1 = new Person(2222, "ysk");
l.add(person);
l.add(person1);
第三種解決辦法
將物件都存入陣列中,然後寫入陣列物件。
讀取的時候,取出陣列,再遍歷陣列,取出所需的物件。
// 把多個物件,存到物件陣列中。
Person[] p = { new Person(1234, "wang"),new Person(2222, "ysk" )};
// 序列化一組物件。
oos.writeObject(p);
oos.flush();
oos.close();