1. 程式人生 > >Java反序列化時報異常java.io.EOFException

Java反序列化時報異常java.io.EOFException

問題

這裡寫圖片描述

第一種解決辦法

在寫完物件後,加一句 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();