如何解决readObject类似于readLine

时间:2014-03-14 04:41:50

标签: java serialization io

我正在读取包含许多序列化对象的文件。 我想将它们反序列化,并意识到我们不能像readObject那样使用readLine

while (ois.readObject != null) {

}

会抛出异常。根据我的知识,我们还没有hasNextnext种机制。

如何在现实世界中修复阅读对象的问题?

2 个答案:

答案 0 :(得分:2)

捕获EOFException,并在获得它时关闭并中断。

readObject()只有在写入null时才返回null,并且不必暗示流的结束。

答案 1 :(得分:0)

假设您正在尝试加载Person对象,您可以尝试类似:

        ArrayList<Person> persons = new ArrayList();
        while (true) {
            try {
                persons.add((Person) ois.readObject());
            } catch (EOFException e) {
                break;
            }
        }

或者不是序列化单个对象,而是可以将对象添加到数组或arraylist并序列化列表对象。然后,您可以轻松地反序列化列表对象,而不必处理EOFException。请参阅John Purcell's serialization tutorial中的示例。