免责声明我的问题与以下两个链接不同
public class AppendableObjectOutputStream extends ObjectOutputStream {
public AppendableObjectOutputStream(OutputStream out) throws IOException {
super(out);
}
@Override
protected void writeStreamHeader() throws IOException {}
}
- 上述解决方案的问题在于,它们不支持在不关闭流的情况下将多个对象写入可追加流。
- 如果我打开可附加流,写入多个对象 - 那么在读取时我只能正确读取第一个对象,并且在尝试读取第二个对象时,我会收到 EOF 异常。
如果我继续将对象写入可附加流的方式,请关闭流。然后再次打开流,写入另一个对象关闭等等。这样我就可以正确读取多个对象。
fileOutputStream = new FileOutputStream("abc.dat",true); outputBuffer = new BufferedOutputStream(fileOutputStream); objectStream = new AppendableObjectOutputStream(outputBuffer); BucketUpdate b1 = new BucketUpdate("getAllProducts1",null,"1",null); BucketUpdate b2 = new BucketUpdate("getAllProducts2",null,"2",null); BucketUpdate b3 = new BucketUpdate("getAllProducts3",null,"3",null); objectStream.writeObject(b1); objectStream.writeObject(b2); objectStream.writeObject(b3); objectStream.close();
最佳答案
在写入每个对象后调用 ObjectOutputStream.reset() 将修复此问题。
关于java - 追加到 ObjectOutputStream(写入多个对象而不关闭流),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578973/