Java Android从文件加载错误
当我试图从文件中读取序列化对象时,会收到偶然的错误消息。它10次中有9次工作正常,但出于某种原因,我在catlog中收到了很多这样的错误消息:Java Android从文件加载错误,java,android,serialization,buffer,ioexception,Java,Android,Serialization,Buffer,Ioexception,当我试图从文件中读取序列化对象时,会收到偶然的错误消息。它10次中有9次工作正常,但出于某种原因,我在catlog中收到了很多这样的错误消息: 06-01 23:57:50.824: ERROR/MemoryFile(16077): MemoryFile.finalize() called while ashmem still open 及 第二条消息没有指出异常是在哪里引起的。显然,当我加载文件时,我已经尝试过了 我的loadfile方法如下所示: public
06-01 23:57:50.824: ERROR/MemoryFile(16077): MemoryFile.finalize() called while ashmem
still open
及
第二条消息没有指出异常是在哪里引起的。显然,当我加载文件时,我已经尝试过了
我的loadfile方法如下所示:
public TGame loadSavedGame(){
TGame g=null;
InputStream instream = null;
BufferedReader br=null;
InputStreamReader inputreader=null;
try {
File sdCard = Environment.getExternalStorageDirectory();
instream = new
FileInputStream(sdCard.getAbsolutePath()+"/egyptica/serializationtest");
// inputreader = new InputStreamReader(instream);
// br= new BufferedReader(inputreader);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
try {
ObjectInputStream ois = new ObjectInputStream(instream);
try {
g= (TGame) ois.readObject();
try {
instream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return g;
} catch (ClassNotFoundException ex) {
// TODO Auto-generated catch block
android.util.Log.e("DESERIALIZATION FAILED (CLASS NOT
FOUND):"+ex.getMessage(), "ex");
ex.printStackTrace();
return null;
}
} catch (StreamCorruptedException ex) {
android.util.Log.e("DESERIALIZATION FAILED (CORRUPT):"+ex.getMessage(),
"ex");
// TODO Auto-generated catch block
ex.printStackTrace();
return null;
} catch (IOException ex) {
android.util.Log.e("DESERIALIZATION FAILED (IO
EXCEPTION):"+ex.getMessage(), "ex");
// TODO Auto-generated catch block
ex.printStackTrace();
return null;
}
}
我想到的一种可能性是使用BufferedReader重新读取文件。但是我不知道该怎么做。任何帮助都将不胜感激。尝试在尝试之后放置finally block,并在此处为您的流添加结束语句,另外有用的是使用:
FileInputStream.getFD().sync();
它确保该文件确实收到您的关闭/刷新
FileInputStream.getFD().sync();