2

在我的 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官方网站上阅读了内部存储,但我没有找到任何东西,我怀疑我开始写时有一种锁。

4

0 回答 0