簡體   English   中英

嘗試讀取序列化的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM