将文本写入文件而不附加

时间:2013-12-23 12:10:23

标签: java string io

好的,所以我正在实施一个系统,我保留了.txt文件中的计数。

计数是一个整数。

我唯一的问题是,不是替换以前的计数; e.g

"78" -> "79"

它将新计数添加到先前的计数; e.g

"78" -> "7879"

我的代码是:

private static void saveCount(int inCount) throws FileNotFoundException, IOException {
    BufferedReader fbr = new BufferedReader(new FileReader("count.txt"));
    try (FileWriter fw = new FileWriter("count.txt", (fbr.readLine() != null))) {
        String count = Integer.toString(inCount);
        fw.write(count);
    }
}

4 个答案:

答案 0 :(得分:5)

FileWriter构造函数的第二个参数是布尔标志append。将其设置为false以覆盖文件而不是附加。

答案 1 :(得分:3)

您正在启用追加功能。将(fbr.readLine()!=null)替换为false以禁用追加,如下所示:

private static void saveCount(int inCount) throws FileNotFoundException, 
        IOException {
    BufferedReader fbr = new BufferedReader(new FileReader("count.txt"));
    try (FileWriter fw = new FileWriter("count.txt", false)) {
        String count = Integer.toString(inCount);
        fw.write(count);
    }
}

答案 2 :(得分:1)

您使用的FileReader的构造函数具有参数append(boolean)。万一它是真的 - 你将追加文件的内容(并有7879)。万一它是假的 - 文件内容将被覆盖。

所以看起来fbr.readLine()不是null,所以每次都附加内容。

答案 3 :(得分:1)

使用BufferedWriter而不是BufferedReader,并在完成后关闭它。

    BufferedWriter out = new BufferedWriter(new FileWriter("count.txt"));
    out.write(Integer.toString(inCount));
    out.close();