以下代碼會生成EOFException
。這是爲什麼?Java帶有讀取對象的神祕EOF異常
public static Info readInfoDataFromFile(Context context) {
Info InfoData = null;
FileInputStream fis = null;
ObjectInputStream ois = null;
Object object = null;
if (context.getFileStreamPath("InfoFile.dat").exists()) {
try {
fis = context.openFileInput("InfoFile.dat");
ois = new ObjectInputStream(fis);
Object temp;
try {
// here it throws EOF exception in while loop
while ((temp = ois.readObject()) != null) {
object = temp;
}
} catch (NullPointerException npe) {
npe.printStackTrace();
} catch (EOFException eof) {
eof.printStackTrace();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ois != null) {
ois.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fis != null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
堆棧跟蹤:
03-07 14:29:01.996: WARN/System.err(13984): java.io.EOFException
03-07 14:29:01.996: WARN/System.err(13984): at java.io.DataInputStream.readByte(DataInputStream.java:131)
03-07 14:29:01.996: WARN/System.err(13984): at java.io.ObjectInputStream.nextTC(ObjectInputStream.java:628)
03-07 14:29:01.996: WARN/System.err(13984): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:907)
03-07 14:29:01.996: WARN/System.err(13984): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)03-07 14:29:01.996: WARN/System.err(13984): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
03-07 14:29:01.996: WARN/System.err(13984): at
的Javadoc:'任何試圖讀取對象數據超過由相應writeObject方法寫入的自定義數據的邊界將導致OptionalDataException與TRUE' – malinois
的EOF字段值被拋出是的,我已經閱讀它但如何避免它? –