我正在使用下面的代码,从我桌面上保存的文件中获取数据,以输入到我正在制作的游戏中。
try {
FileInputStream saves = new FileInputStream("/Users/Prodigy958/Desktop/Hack_exeSaves.ser");
ObjectInputStream in = new ObjectInputStream(saves);
test = (player) in.readObject();
in.close();
saves.close();
} catch(IOException error) {
error.printStackTrace();
return;
} catch(ClassNotFoundException error) {
error.printStackTrace();
return;
}
还有一个部分可以获取玩家对象并将其输入文件。
player realPlayer = new player();
realPlayer.name = newName;
realPlayer.gender = newGender;
realPlayer.hasStarted = false;
try {
FileOutputStream fileOut = new FileOutputStream("/Users/Prodigy958/Desktop/Hack_exeSaves.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(realPlayer);
out.close();
fileOut.close();
} catch(IOException i) {
i.printStackTrace();
}
我遇到的问题是,如果您将多个播放器数据保存到文件中,它会调出错误,因为它会获取所有数据并将其转换为一个播放器对象。你知道一种简单的方法可以分割数据吗?我曾想过使用多个文件来存储每个不同对象的数据。我也有关于取出数据并将其拆分为单独的对象,然后从那里开始工作,但是我不知道从哪里开始。
答案 0 :(得分:2)
正如其他人已经建议的那样,使用java.util.Collection的Serializable实现。 (大多数java.util集合 - 例如java.util.ArrayList和java.util.HashSet - 都是Serializable。)0或1个元素的集合不应该打扰你(它不是与集合的序列化相关)除非你的游戏有其他关心的业务要求,但......在这种情况下,这远远超出了这个问题的范围,并且你可以自己处理。