嗨我试图在调用onPause()和/或onStop()时将对象的ArrayList保存到文件中,然后在应用程序被杀死并重新启动后从该文件中读取arrayList。香港专业教育学院尝试了一些不同的方法,但似乎没有工作,目前这就是我所拥有的。
我写的代码:
try{
FileOutputStream fout = openFileOutput(FILENAME, 0);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(toDos);
oos.close();
}
catch (Exception e){
e.printStackTrace();
}
我的阅读代码:
try{
FileInputStream streamIn = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(streamIn);
if(ois.readObject() != null) {
list = (ArrayList<Object>) ois.readObject();
ois.close();
}
}
catch (Exception e){
e.printStackTrace();
}
&#34; FILENAME&#34;是一个包含字符串&#34; data.txt&#34;的变量。 toDos是arrayList的名称,它是Activity顶部的一个字段,它是Objectizable的一个ArrayList,它是Serializable。
不确定我在这里做错了什么,我无法判断它的写作是否完全或问题可能出在何处。
答案 0 :(得分:0)
您正在获取EOFException,因为您正在读取对象两次;一旦你检查if语句,再一次在if语句中。将您的代码更改为以下内容:
FileInputStream streamIn = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(streamIn);
ToDoObject tmp = (ArrayList<ToDoObject>) ois.readObject();
ois.close();
if(tmp != null) {
toDos = tmp;
}
此代码完成相同的操作,但只能从文件中读取一次。