有人知道如何在Android上将对象保存并恢复到文件中吗?
使用openFileOutput()打开文件(http://developer.android.com/guide/topics/data/data-storage.html#filesInternal),然后使用ObjectOutputStream(http://download.oracle.com/javase/1.4.2/docs/api/java/io/ObjectOutputStream.html)将您的对象写入文件中。
使用它们的"邪恶双胞胎" openFileInput() 和 ObjectInputStream()来反向进行该过程。
这取决于您想要将文件保存在内部还是外部媒体上。对于这两种情况,Android DEV网站上都有很好的示例:http://developer.android.com/guide/topics/data/data-storage.html - 这肯定会有所帮助。
readObject()
返回一个Object
,因此您需要进行强制转换,尽管编译器会抱怨它是未经检查的转换。但我仍然可以正常运行我的代码。您可以在此处阅读更多关于类型转换问题的内容。ListItemsModel
)是可序列化的,因为writeObject()
将对您的对象进行序列化,而readObject()
将对其进行反序列化。如果它不是(您将无法持久化并且logcat会抛出NotSerializableException
),则请确保您的类实现了java.io.Serializable
,然后您就可以开始了。请注意,此接口中不需要实现任何方法。如果您的类无法实现Serializable
并正常工作(例如第三方库类),此链接将帮助您对对象进行序列化。private void readItems() {
FileInputStream fis = null;
try {
fis = openFileInput("groceries");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<ListItemsModel> list = (ArrayList<ListItemsModel>) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
private void writeItems() {
FileOutputStream fos = null;
try {
fos = openFileOutput("groceries", Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(itemsList);
} catch (IOException e) {
e.printStackTrace();
}
}