Android:写完后我无法从内部存储中读取文件

时间:2013-07-02 20:09:37

标签: java android gson android-file

在我的android应用程序中,我将大对象序列化并将其写入文件。我正在使用gson并将文件存储到内部存储中。

如果我写一个文件并退出我的应用程序,那么如果我登录并尝试阅读此文件,我就不会遇到任何问题。

如果我编写文件并尝试在没有现有应用程序的情况下读取此文件,则无法正确反序列化对象。我的应用程序没有崩溃,我也没有在日志中看到任何内容,但我的对象不包含正确的数据。

这些是我的读写功能;

public static void objecttoJson(MyObject myObject,String fileName){

    Gson gson = new Gson();
    String jsonString = gson.toJson(myObject);
    try {

        FileOutputStream fos =  MyApplication.getMyContext().openFileOutput(fileName, Context.MODE_PRIVATE);
        fos.write(jsonString.getBytes());
        fos.close();
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e){
        e.printStackTrace();
    }


public static MyObject jsontoObject(String fileName) {

    Gson gson = new Gson();

    String mystring = null;

    try {    
        FileInputStream fis =   MyApplication.getMyContext().openFileInput(fileName);
        InputStreamReader in = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(in);
        String line;
        while((line = br.readLine()) != null){
            if(result == null){
                mystring  = line;
            }
            else{
            mystring.concat(line);
            }
        }

        MyObject obj = gson.fromJson(mystring, MyObject.class);

        fos.close();
        return obj;

    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

}

当我退出应用程序时,我不知道为什么我的代码有效。我检查了我的其他课程,并在Android官方网站上阅读了内部存储空间,但我没有找到任何东西,我怀疑当我开始写作时会有一种锁定。

0 个答案:

没有答案