在Android应用程序中,我需要将一些数据保存到A类对象的ArrayList中的文件中.ArrayList中类型A的对象由标准基元对象组成,除了每个A对象还包含一个对象的ArrayList B型。
B对象也由原始数据类型组成。 A类和B类都没有任何特定的代码来实现Serializable。
我的问题是如何将这些数据写入文件。我是否需要添加特定支持来序列化这些对象?我怀疑不是因为它们只包含原始数据类型,但OTOH我怀疑我需要,因为ArrayList本身不是原始类型。
非常感谢指导。我想做最简单的事情。我知道我可以编写自己的JSONSerializer代码,手动序列化A类中的每个字段,并调用B类中的JSON序列化程序代码来序列化ArrayList项,并将其全部填入文件中。我也不想通过SQLLite来运行它。
虽然我在序列化arraylists上发现了许多帖子,但我没有找到嵌套ArrayLists的帖子。在此先感谢您的帮助。
答案 0 :(得分:2)
如果你想使用Serializable,你应该没有问题,因为ArrayList
是Serializable。只要确保你的非原始对象也是Serializable。
答案 1 :(得分:0)
使用ObjectInputStream和ObjectOutputStream,类似于:
public static void saveArrayListToFile(ArrayList<Book> books, String filePath)
{
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(filePath)));
oos.writeObject(books);
oos.close();
}
// ...
public static ArrayList<Book> loadArrayListFromFile(String filePath)
{
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(filePath)));
try
{
return (ArrayList<Book>) ois.readObject();
}
finally
{
ois.close();
}
}
请注意,Book类必须实现Serializable接口。我没有测试代码,但它应该工作。您可能需要尝试捕获上面代码中的任何异常。