我想保存并加载包含“Book”对象的 ArrayList。
ArrayList<Book> books = new ArrayList<Book>();
我看到很多关于这个的话题,几乎都说要使用序列化。 所以我完成了:
图书类(class)
public class Book implements Serializable{
STUFF
}
主要
public static void saveList(String saveName, ArrayList<Book> books) throws IOException {
FileOutputStream fos = new FileOutputStream(saveName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(books);
oos.close();
}
public static ArrayList<Book> loadList(String saveName) throws ClassNotFoundException, IOException {
FileInputStream fis = new FileInputStream(saveName);
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<Book> books = (ArrayList<Book>) ois.readObject();
ois.close();
return books;
}
它可以工作,但问题是,如果我们在类中进行更改(例如我们添加一个属性),它将不再加载保存。
所以我想保存在 xml 文件中。我看到了一些关于在 xml 文件中写入和加载的主题,但几乎所有主题都已过期链接并在最新版本中删除了包,因此它们是旧的灵魂,不再起作用。
问题:
如何创建包含对象的 ArrayList 的安全保存,并在更新 Book 类时加载它?对于“安全保存”,我的意思是它将适用于长期存储(我读到序列化不适用于长期存储)
我认为有一种方法,因为应用程序和游戏在更新时也会读取保存。他们是如何做到的?
PS,抱歉我的英语不好
最佳答案
使用某种数据库并管理您的架构。您的问题是您想要更改对象的定义而不更新现有对象。当您向图书添加 author
字段时会发生什么?新创作的书会有作者,而旧书则没有,你需要为此做好准备。这正是架构管理器所做的事情。
关于java - 如何创建 ArrayList 的安全保存并在类被编辑时加载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440669/