[英]Trying to read a serialized file
我一直在嘗試讀取此文件,並將每個對象添加到ArrayList
。 問題在於它永遠不會進入while
循環。
你們知道這可能是什么問題嗎? 我可以改善代碼的語法嗎?
public ArrayList<Notificacion> obtenerListaNovedades() {
ObjectInputStream ois = null;
try {
if (f.exists()) {
FileInputStream fis = new FileInputStream(f);
ois = new ObjectInputStream(fis);
while (true) {
Notificacion notificacion = (Notificacion) ois.readObject();
listaNotificaciones.add(notificacion);
}
} else {
System.out.println("hay algo ene l archi");
}
} catch (Exception e) {
}
return listaNotificaciones;
}
該while循環也只會在發生異常時退出。 最好使用布爾值控制循環,然后通過將布爾值設置為false來捕獲EOFException以退出循環。 就像是:
boolean hasObjects = true;
while (hasObjects) {
String notificacion = null;
if (ois != null) {
try {
notificacion = (Notificacion) ois.readObject();
listaNotificaciones.add(notificacion);
} catch (EOFException e) {
hasObjects = false;
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
} else {
hasObjects = false;
}
}
永遠不要吞下異常,否則您將不知道出了什么問題
改成
catch (Exception e) {
e.printStackTrace ();
}
嘗試讀取文件時,您很可能會遇到異常,並且由於您沒有對該異常執行任何操作,因此您不知道發生了什么。 至少,將異常的內容打印到控制台,然后看一下:
e.printStackTrace();
e.getMessage();
因此,再次查看異常,然后從那里開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.