Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从文件加载错误_Java_Android_Serialization_Buffer_Ioexception - Fatal编程技术网

Java Android从文件加载错误

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

当我试图从文件中读取序列化对象时,会收到偶然的错误消息。它10次中有9次工作正常,但出于某种原因,我在catlog中收到了很多这样的错误消息:

    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();