Я искал ответа на этот вопрос, но никто из других ответов не работал для меня. Я использую сериализацию в android, и я сериализую один объект. Проблема в том, что когда я десериализую это, я получаю EOFException и объект не загружается. Моя экономия код:EOFException при чтении сериализованного файла в Android
FileOutputStream fileOut = null;
try {
fileOut = context.openFileOutput("state.ser", Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(MyObject);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
Моя загрузка класса, который бросает это исключение:
FileInputStream fis;
try {
fis = context.openFileInput("state.ser");
ObjectInputStream is = new ObjectInputStream(fis);
myObject = (MyObject) is.readObject(); //exception thrown from here
is.close();
} catch (FileNotFoundException e) {
generateMyObject();
} catch (Exception e) {
e.printStackTrace();
}
Определение моего объекта:
public class MyObject implements Serializable {
private static final long serialVersionUID = 155986L;
public MyInnerObject[][] mio = null;
public Boolean[] unassigned = null;
}
public class MyInnerObject implements Serializable {
private static final long serialVersionUID = 1L;
public boolean[] legals;
public int ID;
public int pos;
}
Что я делаю неправильно? Спасибо за все ответы.
EDIT: трассировка стека
java.io.EOFException
java.io.DataInputStream.readBoolean(DataInputStream.java:69)
java.io.ObjectInputStream.readNewArray(ObjectInputStream.java:1462)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:760)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1981)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1938)
java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1115)
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1347)
java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1244)
java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1833)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:762)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1981)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1938)
java.io.ObjectInputStream.readNewArray(ObjectInputStream.java:1490)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:760)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1981)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1938)
java.io.ObjectInputStream.readNewArray(ObjectInputStream.java:1490)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:760)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1981)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1938)
java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1115)
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1347)
java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1244)
java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1833)
java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:762)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1981)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:1938)
com.example.myApp.Cell.loadState(Cell.java:224)
... rest is only where in app it appeared
Кроме того, даже, что это только предупреждение, объект не загружается, так что я не могу использовать его.
Вы также должны опубликовать трассировку стека. –
Извините, что я добавил его в редакцию. – Rasputin