保存到文本文件不起作用

时间:2015-02-01 12:35:03

标签: java android save

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

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行的Life值, 我将使用: saveInt(getFileIO(),30,Life-1)
它不是更改我指定的特定行,而是删除了文件中的所有数据。

1 个答案:

答案 0 :(得分:0)

您无法同时从同一个文件读取/写入。

要实现您想要的目标,请尝试以下方法:

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

2)保存列表中的所有行。

3)将所有行写回文件。

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