追加到一个ObjectOutputStream

12 浏览
0 Comments

追加到一个ObjectOutputStream

是否不可能向ObjectOutputStream追加内容?

我试图向一个对象列表追加内容。下面的代码段是一个在每次作业完成时调用的函数。

FileOutputStream fos = new FileOutputStream
           (preferences.getAppDataLocation() + "history" , true);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject( new Stuff(stuff) );
out.close();

但是当我尝试读取时,我只能得到文件中的第一个。然后我得到了java.io.StreamCorruptedException

为了读取,我使用了以下代码:

FileInputStream fis = new FileInputStream
        ( preferences.getAppDataLocation() + "history");
ObjectInputStream in = new ObjectInputStream(fis);    
try{
    while(true)
        history.add((Stuff) in.readObject());
}catch( Exception e ) { 
    System.out.println( e.toString() );
}

我不知道会有多少个对象存在,所以我会在没有异常的情况下继续读取。根据谷歌的说法,这是不可能的。我想知道是否有人知道一种方法?

0