我有一个Android应用程序,并希望将我在onPause()/ onResume()方法上创建的数据结构存储/检索到内存,以便数据在运行之间通过FileOutputStream / FileInputStream保持,这是标准做法为了这。
那么,如何将数据结构保存到文件中以便以后可以获取它(我已经看过使用字符串而不是其他对象执行此操作的示例)?我是否强制为我的数据结构及其包含的后续对象创建一个getBytes()函数,以及为从字节数组创建它们的所有这些对象构造构造函数?
编辑:啊,好吧;所以这叫做序列化。 以下是否正确?写:
FileOutputStream fileOut = new FileOutputStream("filename");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
阅读:
FileInputStream fileIn = new FileInputStream("filename");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (ObjectType) in.readObject();
in.close();
fileIn.close();
Edit2:此外,数据结构和包含的对象(以及子对象)都应该实现Serializable。 例如,如果我有一个Dogs的ArrayLists的BST,那么我会让BST,ArrayList和Dog类都实现Serializable,然后调用上面的函数。
这一切都是正确的吗?
答案 0 :(得分:1)
查看Serializable库here。这允许您直接将类编写为非人类可读文件,然后以相同方式回读。
答案 1 :(得分:0)
使用JSON或XML序列化数据很常见。否则,您可以查看谷歌协议缓冲区以获得更密集的数据文件。