我一直在尝试阅读此文件,并在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;
}
答案 0 :(得分:2)
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;
}
}
答案 1 :(得分:1)
永远不会吞下异常,否则你不会知道出了什么问题
更改为
catch (Exception e) {
e.printStackTrace ();
}
答案 2 :(得分:0)
您最有可能在尝试读取文件时遇到异常,并且因为您没有做任何异常操作,您不知道发生了什么。至少,将异常的内容打印到控制台并查看:
e.printStackTrace();
e.getMessage();
所以,再次,看看异常并从那里开始。