Java序列化和处理对象

时间:2016-07-19 20:27:23

标签: java class serialization

我正在使用下面的代码,从我桌面上保存的文件中获取数据,以输入到我正在制作的游戏中。

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();
}

我遇到的问题是,如果您将多个播放器数据保存到文件中,它会调出错误,因为它会获取所有数据并将其转换为一个播放器对象。你知道一种简单的方法可以分割数据吗?我曾想过使用多个文件来存储每个不同对象的数据。我也有关于取出数据并将其拆分为单独的对象,然后从那里开始工作,但是我不知道从哪里开始。

1 个答案:

答案 0 :(得分:2)

正如其他人已经建议的那样,使用java.util.Collection的Serializable实现。 (大多数java.util集合 - 例如java.util.ArrayListjava.util.HashSet - 都是Serializable。)0或1个元素的集合不应该打扰你(它不是与集合的序列化相关)除非你的游戏有其他关心的业务要求,但......在这种情况下,这远远超出了这个问题的范围,并且你可以自己处理。