Я создаю игру, в которой все местоположения «блоков» хранятся в переменной block_area
- объект класса Area
.Моя игра работает корректно уже неделю, и я решил реализовать функцию сохранения и загрузки, в которой я сохраняю block_area
в файл Drifter
, с таким кодом:
Area block_area; // Later initialized
void saveArea()
{
try
{
FileOutputStream fos = new FileOutputStream(savefile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(block_area);
oos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
void loadArea()
{
try
{
FileInputStream fis = new FileInputStream(savefile);
ObjectInputStream ois = new ObjectInputStream(fis);
block_area = (Area)ois.readObject();
ois.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
Тем не менее, это мой первый раз, когда я пишу и читаю ОБЪЕКТ в файл, поэтому я мало что знаю об этом.Когда я пытаюсь сохранить объект в файл, он выдает мне такую ошибку:
java.io.NotSerializableException: java.awt.geom.Area
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at Drifter.saveArea(Drifter.java:58)
at Drifter.keyPressed(Drifter.java:315)
...
Если кто-нибудь может сказать мне, как я могу написать и прочитать объект с файлом, помощь будет оченьприветствуется.
TL; DR Как мне записать содержимое объекта Area
в файл и прочитать его?
ТАКЖЕ У меня есть несколько замечанийвопросы:
- Является ли
ObjectInputStream
лучшим вариантом действий здесь?Я видел несколько ответов, в которых люди рекомендуют использовать XML
и JSON
, но я не могу найти время, чтобы узнать о них, и предпочел бы придерживаться метода чистой Java (без каких-либо сторонних инструментов) - Есть ли другой способ сохранения информации об объекте во внешний источник, который я могу использовать вместо обработки файлов?
EDIT - Я должен также упомянуть, что мойкласс реализует Serializable