如何更新文本文件的内容

时间:2017-04-14 06:54:45

标签: java

我的作业要求我制作一个简单的mathGame,它会产生随机数学问题。程序必须在文本文件中记录正确的数量和不正确的数量。它还必须更新现有文件的统计信息,而不是覆盖它们。

这就是我创建每个文件的方式:

try {   
    writer = new FileWriter(userName + " Stats.txt", true);
    outputfile = new PrintWriter (writer);
} catch (IOException e) {
}

以下是写入文件的内容:

public static void saveStats () {

    outputfile.println();
    outputfile.println("Correct Answers:"+ correct);
    outputfile.println("Incorrect Answers:" + incorrect);

    if (money > 0) {
        outputfile.printf("Earnings: $%.2f", money);
        outputfile.println();
    }
    else {
        float moneyNegative = Math.abs(money);
        outputfile.printf("Earnings: -$%.2f", moneyNegative);
        outputfile.println();
    }
    outputfile.flush();
}

以下是退出程序后文本文件的示例输出:

Correct Answers:0
Incorrect Answers:1
Earnings: -$0.03

正确,不正确,金钱都是全局变量,并初始化为0.如果我重新启动程序,我的文件仍然存在,但正确的答案,错误的答案和收入的值将被覆盖或新的条目该文件将被添加。我只是想更新它。

以下是我的所有代码:https://pastebin.com/1Cmg5Rt8

1 个答案:

答案 0 :(得分:0)

您是否尝试过先获取原始文本,然后在开始编写所需内容之前编写原始文本?

基本上,您从开头的文件中获取输入

Scanner s = new Scanner(new File("FileName.txt"));

然后,您可以遍历它并写入文件。

while(s.hasNextLine())
{
    outputfile.println(s.nextLine());
}

将所有先前的文件重写到文本中后,您可以运行其余代码,而不会覆盖信息。

此外,您可以抛出IOException

而不是try-catch