我想更改文件中特定行的值,但这行代码不起作用。
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)
它不是更改我指定的特定行,而是删除了文件中的所有数据。
答案 0 :(得分:0)
您无法同时从同一个文件读取/写入。
要实现您想要的目标,请尝试以下方法:
1)读取文件中的所有行并修改需要更改的行
2)保存列表中的所有行。
3)将所有行写回文件。
创建输出流时,文件的内容将被覆盖(即如果您还没有使用输出流构造函数,可以指定要将数据附加到文件中)。这就是文件大小从0.6 kb变为0 kb的原因。