如何将状态保存到文件并保证文件安全?

时间:2013-04-05 04:32:53

标签: java

我正在尝试为我的游戏创建保存状态,而不是为了你的游戏留下的地方,而是像记分板一样简单。格式如下:

Wins: 5
Losses: 10
GamesPlayed: 15

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

最好的方法是什么?我听说过一些不同的方法来保存数据,例如XML,但是对于我的数据大小来说,这些方法是不是太过分了?

此外,我确实希望保留此文件safe能够进入文件并更改数据的用户。我需要进行某种加密吗?并且,如果用户删除文件并将其替换为空文件,他们不能在技术上重置其值吗?

1 个答案:

答案 0 :(得分: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;
    }
}