0

使用 objectInputStream 从文件中读取数据时遇到问题。请在下面找到代码

File file = new File("model.pst")       
if (file.exists()) {
            fis = new FileInputStream(file);
            in = new ObjectInputStream(fis);
            input = (List<GlobalModel>) in.readObject();
            in.close();
        }

我从 ObjectOutputStream http://docs.oracle.com/javase/6/docs/api/java/io/ObjectOutputStream.html文档中了解到,在将对象写入文件时,他默认了对象的序列化机制写入对象的类、类签名以及所有非瞬态和非静态字段的值。在将对象写入文件后以及使用上述代码时,我遇到了一个问题,即类名已更改要读取这些值,它会抛出一个 classNotFound 异常。我想知道是否有办法,我可以处理这个异常,即一旦遇到异常块,我可以将正在读取的对象中的类名替换为新的类名并使其工作吗?

请协助。提前致谢

4

1 回答 1

0

我自己从来没有这样做过,但是应该可以通过创建对象输入流的子类并覆盖 resolveClass 方法来替换另一个类,http: //docs.oracle.com/javase/6/docs/api/ java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass)

于 2013-07-26T10:47:08.743 回答