保存到文本文件不起作用
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 的原因。
我想更改文件中特定行的值,但是这行代码不起作用。
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 的原因。