如何防止我的作者覆盖文件?

时间:2016-04-13 19:16:31

标签: java

我正在修改我在互联网上找到的2048游戏,这样当他输掉或重置游戏时,它会打印出玩家最后给出的分数。但是,我在保存所有分数方面遇到了问题。它确实有效,但每次播放器重置或丢失时程序都会覆盖该文件。

这是我的作家班。

class writer {
    public void writing(int desiredText) {
        try {
            //Whatever the file path is.
            File highScores = new File("C:/Users/Anthony/Desktop/Java/highScores.txt");
            FileOutputStream is = new FileOutputStream(highScores);
            OutputStreamWriter osw = new OutputStreamWriter(is);    
            Writer w = new BufferedWriter(osw);

            String desiredText_string = Integer.toString(desiredText);
            w.write(desiredText_string);
            w.close();
        } catch (IOException e) {
        System.err.println("Problem writing to the file highScores.txt");
        }
    }
}

请注意,这是作家需要的确切时刻。

public void keyPressed(KeyEvent e) {
   if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
write.writing(myScore);

resetGame();          
   }
if (!canMove()) {
   write.writing(myScore);

   myLose = true;
}

... (code is continued on...)

2 个答案:

答案 0 :(得分:3)

如果您不想overwrite但想要append此处文件末尾的新数据是如何继续:

FileOutputStream is = new FileOutputStream(highScores, true);

答案 1 :(得分:1)

另一种解决方案(我不确定是否更好)是每次游戏结束时创建一个新文件:

Date date = new Date();
File highScores = new File("C:/Users/Anthony/Desktop/Java/highScore"+date+".txt");

在文件名末尾添加时间戳。