如何在android中保存(永久)文件,并在以后恢复数据?

时间:2015-01-04 11:23:30

标签: android

我真的通过stackoverflow试图找到正确的答案...也许我做错了什么。 我正在制作我的第一个更精心设计的应用程序,这是适合儿童的quizz应用程序。我希望得分保存在highscorestable.txt中,稍后会打开,更新,读取等等。文件应该在关闭应用程序后存在,以便在下一个游戏中重复使用,依此类推。 我正在使用http://developer.android.com/guide/topics/data/data-storage.html。我希望将文件保存在手机内存中。 我有以下代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_high_scores);
        Intent intent = getIntent();
        String userData;
        scores =(EditText)findViewById(R.id.scores);

        if(intent.getStringExtra(EndScreen.EXTRA_MESSAGE)!=null)
        {
         userData = intent.getStringExtra(EndScreen.EXTRA_MESSAGE);
        }
        else
        {
         userData="";
         }

        String temp = "";//to widzi przy zaladowaniu
        String output = "";
        String g="";

        //FIRST READING not necessary?
try{
            FileInputStream fin = openFileInput("highscorestable.txt");

            int c;
            while( (c = fin.read()) != -1){
               temp = temp + Character.toString((char)c);
            }
            fin.close();

        }
     catch (Exception e) {
            // e.printStackTrace();
     }   
        if(temp.equals(null))
        {
            temp = "";
        }

        //output = userData; //+ temp;
        FileOutputStream fos;//WRITING
        try {
            fos = openFileOutput("highscorestable.txt", Context.MODE_PRIVATE);
            fos.write(userData.getBytes());
            fos.close();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        //READING2
        try{
            FileInputStream fin = openFileInput("highscorestable.txt");

            int c;
            while( (c = fin.read()) != -1){
               g = g + Character.toString((char)c);
            }
            fin.close();

            output= output+g;
            scores.setText(output);
        }
         catch (Exception e) {
         }  

意图本身有效,实际上一切正常,但文件本身并不持久。我的意思是,当我开始新游戏时,旧数据不会恢复。如何解决?

1 个答案:

答案 0 :(得分:0)

尝试使用sharedPrefrences:http://developer.android.com/training/basics/data-storage/shared-preferences.html

它们作为XML永久存储在应用程序中,并且只有在配置正确的情况下才能对应用程序读取。 (除非您需要文字,请在此处阅读:http://developer.android.com/training/basics/data-storage/files.html请记住向您的清单添加权限

修改: 尝试附加到不写

的文件中