John Singh
John Singh

Reputation: 1

how to handle the EOF Exception in my given code

try {
        FileInputStream fis = new FileInputStream(f);
        Log.d("Objects remaining; ", fis.available()+"");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Log.d("Objects remaining; ", fis.available() + "");
        Question question = (Question) ois.readObject();
        Log.d("FIS:",fis.toString());
        Log.d("OIS:",ois.toString());
    } catch (Exception e){
        e.printStackTrace();
    }

}

I can't figure how to handle the given exception in my code.

11-06 12:49:52.879  27005-27005/com.example.android.fileio D/Objects remaining;﹕ 4
11-06 12:49:52.880  27005-27005/com.example.android.fileio D/Objects remaining;﹕ 0
11-06 12:49:52.880  27005-27005/com.example.android.fileio W/System.err﹕ java.io.EOFException
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.DataInputStream.readByte(DataInputStream.java:77)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.nextTC(ObjectInputStream.java:505)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:752)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.example.android.fileio.MainActivity.makeFile(MainActivity.java:71)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.view.View.performClick(View.java:4756)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.view.View$PerformClick.run(View.java:19748)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.os.Looper.loop(Looper.java:135)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5254)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
11-06 12:49:52.881  27005-27005/com.example.android.fileio W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)

Upvotes: 0

Views: 380

Answers (1)

yasd
yasd

Reputation: 956

There are 4 bytes available on the stream. Probably your serialized Question object would be larger than four bytes. I think this produces the EOFException. You have handled the exception by printing a stack trace. Are you sure the file contains what you expect?

Upvotes: 1

Related Questions