我使用以下方法从内部存储中读取:
private void deserialize(ArrayList<Alias>arrayList) {
try {
FileInputStream fis = openFileInput(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
arrayList = (ArrayList<Alias>)ois.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
它将文件“filename”的内容读取到“arrayList”。
“序列化”方法如下:
void serialize(ArrayList<Alias>arrayList) {
FileOutputStream fos;
try {
fos = openFileOutput(filename, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(arrayList);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
问题在于,每当我再次运行程序时,“arrayList”为空。所以我想我是在错误的输入模式下打开文件。
我的目标是首先从文件中获取数组,然后在应用程序中修改它,然后将修改后的数组写回文件。
有人可以帮我解决我的问题吗?
谢谢!
答案 0 :(得分:0)
你可以发布你的源代码吗?我认为你用来解析文件内容的方式会出问题。
答案 1 :(得分:0)
请阅读:
Android ObjectInputStream docs
我读到方法readObject()读取下一个对象...这个你必须用这样的东西迭代:
MediaLibrary obj = null;
while ((obj = (MediaLibrary)objIn.readObject()) != null) {
libraryFromDisk.add(obj);
}