使用FileOutputStream将数据结构写入文件?

时间:2013-06-21 13:35:09

标签: java android fileinputstream

我有一个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,然后调用上面的函数。

这一切都是正确的吗?

2 个答案:

答案 0 :(得分:1)

查看Serializable库here。这允许您直接将类编写为非人类可读文件,然后以相同方式回读。

答案 1 :(得分:0)

使用JSON或XML序列化数据很常见。否则,您可以查看谷歌协议缓冲区以获得更密集的数据文件。