java - 如何编码以便我不会添加重复记录而不是覆盖 txt 文件中的内容

标签 java

import java.io.*;

public class SaveGame {

    public static void main(String[] args) {
        String user = "John";//rewrite as String user = String.toString(Game.user)
        String compTime1 = "2";
        String compTime2 = "0";
        String compTime3 = "0";
        String compLevel = "2";
        String tokenCollected = "3";
        String flipperCollected = "2";
        String firebootsCollected = "4";
        String wingbootsCollected = "3";
        String keysCollected = "3";

        saveGame(user,compTime1,compTime2,compTime3,compLevel, tokenCollected, flipperCollected,firebootsCollected,wingbootsCollected,keysCollected);
    }

    public static void saveGame(String user, String compTime1, String compTime2, String compTime3, String compLevel, String tokenCollected, String flipperCollected, String firebootsCollected, String wingbootsCollected, String keysCollected) {
        try
        {
            FileWriter fw = new FileWriter("Game.txt",true);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter pw = new PrintWriter(bw);

            pw.print("\n" +user + "," + compTime1 + "," + compTime2 + "," + compTime3 + "," + compLevel + "," + tokenCollected + "," + flipperCollected + "," + firebootsCollected + "," + wingbootsCollected + "," + keysCollected);
            pw.flush();
            pw.close();
        } catch(Exception e) {
            e.printStackTrace();
            System.out.println("Record not saved"); 
        }   
    }
}

我应该写什么,以便当我添加名称为 John 的数据时,该数据已存在于 game.txt 文件中,不会再次添加,而是会覆盖其中包含 John 的记录在 game.txt 中。我发现只有添加有效。

最佳答案

如果文件不大,您可以将整个文件读取到内存中。将读取的字符串数据解析为对象列表或映射。然后应用新的更改并将整个 block 重新写入文件。您可以将对象的 map 或列表传递给写入函数。

关于java - 如何编码以便我不会添加重复记录而不是覆盖 txt 文件中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59200405/

相关文章:

java - 我将如何使用 while 循环来获取多个输入?

java - 探查器能否更改在 Java 中运行递归调用所需的时间?

java - Spring Boot @Autowired 环境抛出 NullPointerException

java - 带有可绘制对象的 ListView 的缓慢滚动性能

java - 是否可以使java方法超时?

java - GWT 编译无法运行程序 CreateProcess error=206

Java Android 相机

java - 如何使用 Java Swing 使用 onClick 事件运行 linux 命令?

java - 这是尾递归吗?

java - 过滤文件名