Android内部存储错误

时间:2015-07-16 14:56:23

标签: java android internal-storage

我是Android的新手,为Android编写一个简单的游戏。
在游戏中,就像你在大多数游戏中得分一样, 现在,我希望将分数保存在内部存储中,出于某种原因,我设法保存分数,但不会将其加载回来。
这是代码:

final TextView best = (TextView) findViewById(R.id.best);

public int read = -1;
public StringBuffer buffer = new StringBuffer();
public String scoreTxt = buffer.substring(0, buffer.indexOf(" ") + 1);
public int score = 0;
// Save
try {
    fileOutputStream = openFileOutput("record.txt", Context.MODE_PRIVATE);
    fileOutputStream.write(scoreString.getBytes());
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}finally {
    if (fileOutputStream != null) {
        try {
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Toast.makeText(MainActivity.this, "Save() works fine", Toast.LENGTH_SHORT).show();

// load
try {
    FileInputStream fileInputStream = openFileInput("record.txt");
    while ((read = fileInputStream.read())!= -1){
        buffer.append((char)read);
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
best.setText("Best: " + scoreTxt);
Toast.makeText(MainActivity.this, "load() is good too " +    scoreTxt, Toast.LENGTH_SHORT).show();


当我运行应用程序时,logcat中没有崩溃或任何特殊内容,但是当我使用scoreTxt时,输出什么都没有,只是" &#34 ;.
有人可以帮我解决这个问题吗?感谢

3 个答案:

答案 0 :(得分:0)

您永远不会在代码中为scoreTxt指定值。

答案 1 :(得分:0)

您需要在填充buffer之后对其进行解析。现在初始化scoreTxtbuffer为空

您需要替换此

 best.setText("Best: " + scoreTxt);

scoreTxt = buffer.substring(0, buffer.indexOf(" ") + 1);
best.setText("Best: " + scoreTxt);

答案 2 :(得分:0)

此外,我不会将游戏分数存储到文件中,因为分数经常变化,并且您希望避免大量访问磁盘。将其存储在SharedPreferences中,并不时将其刷新到后台线程上的文件中。