保存到文本文件不起作用

Save to a text file is not working

我想更改文件中特定行的值,但是这行代码不起作用。

public static void saveInt(FileIO files, int Lines, int X) {
    BufferedWriter out = null;
    int LN; //counter
    try {
        out = new BufferedWriter(new OutputStreamWriter(
        files.writeFile(file)));
        Scanner sc = new Scanner ( file );
        LN = 1;
        while  (sc.hasNext() ){
            String currLine = sc.nextLine();

            if ( LN==Lines ){
                currLine = Integer.toString(X);
            } 
           LN +=1;
        }
    }
    catch (IOException e) {
        } 
    finally {
        try {
            if (out != null)
                out.close();
        }
        catch (IOException e) {
        }
    }
}

没有显示错误,但我可以看到文件中的所有数据都消失了(文件大小从 0.6 kb 到 0 kb)。 我在每次游戏开始时检查保存文件,如果找不到,那么我 运行 saveFirstTime() 方法,它工作正常(此文件设置为预默认值,每个值由新行分隔) .

随着游戏的进行,一些值会发生变化,我用上面写的方法将该值写入文件,该方法用于保存整数值。 (我有与其他类型相同的方法)

假设我想更改第 30 行中的生命值, 我将使用:saveInt(getFileIO(), 30, Life-1)
它没有更改我指定的特定行,而是删除了文件中的所有数据。

不能同时读写from/to同一个文件。

要实现你想做的,试试这个:

1) 从文件中读取所有行并修改需要更改的行

2) 将所有行保存在列表中。

3) 将所有行写回文件。

当您创建输出流时,文件的内容将被覆盖(也就是说,如果您没有使用允许您指定要将数据附加到文件的输出流构造函数)。这就是文件大小从 0.6 kb 变为 0 kb 的原因。