Я хотел бы сохранить и загрузить свой ArrayList, содержащий объект «Книга».
ArrayList<Book> books = new ArrayList<Book>();
Я видел много тем по этому поводу, и почти все говорят об использовании сериализации.
Итак, я сделал:
КНИЖНЫЙ КЛАСС
public class Book implements Serializable{
STUFF
}
MAIN
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 Извините за мой плохой английский