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