我可以使用 BufferdWriter 只在文件的某些行中写入而不覆盖其他行吗?

问题描述 投票:0回答:0

我想在数据库中保存高分,但是如果抛出 sql-exeption,我想将数据临时保存在文件中。游戏有不同的模式,每个模式都有一个高分。我想要一个这样的保存文件:

2
Bob
4
Luca
6
Celina
9
Bob

第 1 行是游戏模式 1 的得分,第 2 行是玩家的名字。游戏模式 2 的第 3 行和第 4 行,依此类推。

我有这个 Java 代码:

public static void saveHighscoreToDatabase(int spielModus, String nameHighscoretraeger, int score){
        try {
            Connection connection = DriverManager.getConnection(url, user, password);
            String sql = null;
            if (spielModus == 1){
                sql = "INSERT INTO HighscoreLeicht (`Name`, `Score`) VALUES (?,?)";
            }else if (spielModus == 2){
                sql = "INSERT INTO HighscoreMittel (`Name`, `Score`) VALUES (?,?)";
            }else if (spielModus == 3){
                sql = "INSERT INTO HighscoreSchwer (`Name`, `Score`) VALUES (?,?)";
            }else if (spielModus == 4){
                sql = "INSERT INTO HighscoreModus (`Name`, `Score`) VALUES (?,?)";
            }
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1,nameHighscoretraeger);
            statement.setInt(2, score);
            statement.execute();
            connection.close();
        } catch (SQLException e) {
            try {
                BufferedWriter bw = new BufferedWriter(new FileWriter("....SaveFile.txt",true));
                if (spielModus == 1){
                    bw.write(String.valueOf(score));
                    bw.newLine();
                    bw.write(nameHighscoretraeger);
                    bw.close();
                }else if (spielModus == 2){
                    bw.newLine();
                    bw.newLine();
                    bw.write(String.valueOf(score));
                    bw.newLine();
                    bw.write(nameHighscoretraeger);
                    bw.close();
                }else if (spielModus == 3){

                }else if (spielModus == 4){

                }
            }catch (Exception e2){
                System.out.println("Error");
            }
        }

问题是,如果我想保存第 3 行和第 4 行的数据,例如第 1 行和第 2 行的数据会被删除。

我尝试使用“newLine()”来跳过我已经在使用的行,但是这些行中的数据被删除了。例如,如果我想用名字 Luca(第 3 和 4 行)保存分数 4,游戏模式 1(2 和 Bob,第 1 和 2 行)的分数将被删除。

<blank>  
<blank>   
4
Luca
java bufferedreader bufferedwriter
© www.soinside.com 2019 - 2024. All rights reserved.