0

我正在尝试为我的游戏创建保存状态,与其说是游戏所在的位置,不如说是一些简单的东西,比如记分板。格式将是这样的:

Wins: 5
Losses: 10
GamesPlayed: 15

我需要能够访问该文件,并且根据玩家是否赢/输,它将+1附加到文件中的值。

解决此问题的最佳方法是什么?我听说过许多保存数据的不同方法,例如 XML,但这些方法对我的数据大小来说不是矫枉过正吗?

此外,我确实希望让safe用户无法进入文件并更改数据。我需要做某种加密吗?而且,如果用户删除文件并用一个空文件替换它,他们不能在技术上重置他们的值吗?

4

1 回答 1

3

您可以为此使用普通的序列化/反序列化。为了序列化/反序列化一个类,它必须实现Serializable接口。这是一个开始的例子:

public class Score implements Serializable {
    private int wins;
    private int loses;
    private int gamesPlayed;
    //constructor, getter and setters...
}

public class ScoreDataHandler {

    private static final String fileName = "score.dat";
    public void saveScore(Score score) {
        ObjectOutputStreamout = null;
        try {
            out = new ObjectOutputStream(new FileOutputStream(fileName));
            out.writeObject(score);
        } catch (Exception e) {
            //handle your exceptions...
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException ioe) {
                }
            }
        }
    }

    public Score loadScore() {
        ObjectInputStreamin = null;
        Score score = null;
        try {
            in = new ObjectInputStream(new FileInputStream(fileName));
            score = (Score)in.readObject();
        } catch (Exception e) {
            //handle your exceptions...
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException ioe) {
                }
            }
        }
        return score;
    }
}
于 2013-04-05T04:42:59.423 回答