【发布时间】:2010-11-14 17:52:33
【问题描述】:
不能追加到ObjectOutputStream吗?
我正在尝试追加到对象列表。在 sn-p 之后是一个在作业完成时调用的函数。
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() );
}
我不知道会有多少对象出现,所以我在阅读时没有例外。从谷歌的说法来看,这是不可能的。我想知道是否有人知道方法?
【问题讨论】:
-
你是否从流中得到任何东西,或者它是否在循环中第一次抛出异常?
-
它读取我保存的第一个对象然后我得到异常。
-
在上面的代码中,我只看到一个对象写入文件,所以只会读取一个对象,对吧?
-
第一个 sn-p 在一个函数中,每当作业完成时,它都会被多次调用。但我只能阅读我写的第一个。
-
您的代码仅将 1 个对象写入流,是否有任何未显示的对象将超过 1 个对象写入该流?
标签: java serialization append objectoutputstream objectinputstream