我發現this page,建議循環,直到引發異常,然後處理該異常。如何很好地從java.io.ObjectInputStream中讀取未知數量的對象?
基本上它表明的是:
[...]
try {
while (true) {
objectInputStream.readObject();
}
}
catch (EOFException e) {
\\ This ALWAYS happens
}
[...]
然而,由於布洛赫把它有效的Java,一個只能「用於特殊情況例外」並沒有真的什麼特殊的約不包含InputStream的無限數量的對象現在在那裏?這將發生在每一次!
由於ObjectInputStream中沒有hasNext
方法,我該怎麼辦?我真的堅持使用Exception來知道什麼時候沒有更多的對象可供閱讀?
將它們全部放入單個數組/ List列表中並一次讀取? (數組和'List'在這裏都有問題(引用數組通常是不好的,泛型對象作爲具有反序列化的根是好的),所以可能最好的方法是對一個「自定義」有意義的對象進行反序列化。) – 2011-04-04 12:25:31
是的,但不是我不想將文件的全部內容同時保存在內存中...... – jonalv 2011-04-04 12:29:30
由於反向引用,它們將在內存中。 ('readUnshared'也不太可能幫助你。) – 2011-04-04 12:58:22