首先,我要说我已经在StackOverflow和其他地方研究了各种解决方案,但没有一个解决了我的问题。我承认我在这个领域的知识有点缺乏,所以对于所有人来说都很沮丧。
我想做我认为简单的事情。我的应用程序在启动时创建一个文件(如果它还不存在),并用30" 0.0"填充它,每个文件在不同的行上(这已成功完成)。
然后当你击败一个级别时,意图是将文件读取,0.0并将每个文件分配给一个数组的元素,将剩余的时间(例如,2.5)分配给相应的spot(第一级[0],第二级[1]等),然后将其写回文件以跟踪玩家击败每个级别时剩余的时间。
问题变了,虽然它确实将得分写在适当的位置回到文件中(我在测试等级1,所以在spot [0]中),所有其他的0.0&#39成为& #34;空&#34 ;.所以我知道某个地方有一个我不应该看到的错误,经过几天尝试各种解决方案几个小时之后,我终于决定在这里寻求帮助。这是下面的代码:
try {
String[] scoreArray = new String[30];
File sdCard = Environment.getExternalStorageDirectory();
File myFile = new File(sdCard.getAbsolutePath());
// myFile.createNewFile();
File file = new File(myFile, "RLGLscores.txt");
FileOutputStream fOut = new FileOutputStream(file);
String newLine = System.getProperty("line.separator");
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
FileInputStream fis = new FileInputStream(file);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fis));
String data = "";
int i = 0;
while ((data = myReader.readLine()) != null) {
scoreArray[i] = data;
i++;
}
myReader.close();
scoreArray[0] = timerStringFormat;
for (int j = 0; j < 30; j++) {
myOutWriter.write(scoreArray[j] + newLine);
}
myOutWriter.close();
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
timerStringFormat是一个String,它以String的形式保存剩余的时间。我再次对此更新。我的游戏接近完成,我很惊讶,我已经尽我所能了。但是,任何帮助将不胜感激。
答案 0 :(得分:0)
打开要写入的文件会将其截断为零长度。如果您稍后尝试从中读取,则只会看到一个空文件。
要解决此问题,请首先阅读内容,关闭阅读器,然后打开输出流并将修改后的内容写回。