Android从数组中读取和写入文件

时间:2014-06-29 03:29:08

标签: android arrays file io

首先,我要说我已经在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的形式保存剩余的时间。我再次对此更新。我的游戏接近完成,我很惊讶,我已经尽我所能了。但是,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

打开要写入的文件会将其截断为零长度。如果您稍后尝试从中读取,则只会看到一个空文件。

要解决此问题,请首先阅读内容,关闭阅读器,然后打开输出流并将修改后的内容写回。