首页 > Java > java教程 > 如何在 Java 中将对象追加到现有的 ObjectOutputStream?

如何在 Java 中将对象追加到现有的 ObjectOutputStream?

Mary-Kate Olsen
发布: 2024-12-20 09:06:13
原创
592 人浏览过

How Can I Append Objects to an Existing ObjectOutputStream in Java?

追加到 ObjectOutputStream:解决方案

在 Java 中,本质上不支持追加到 ObjectOutputStream。尝试使用标准 ObjectOutputStream 附加到现有文件将导致读取时出现 StreamCorruptedException。

要克服这一限制,可以子类化 ObjectOutputStream 并重写其 writeStreamHeader 方法。修改后的 writeStreamHeader 不应写入标头,而是在写入初始对象时重置流。

以下代码演示了 AppendingObjectOutputStream 类的创建:

public class AppendingObjectOutputStream extends ObjectOutputStream {

  public AppendingObjectOutputStream(OutputStream out) throws IOException {
    super(out);
  }

  @Override
  protected void writeStreamHeader() throws IOException {
    // do not write a header, but reset:
    this.reset();
  }

}
登录后复制

要使用该类,判断目标历史文件是否存在。如果是,则实例化 AppendingObjectOutputStream 以追加数据而不写入标头。如果文件不存在,则实例化标准ObjectOutputStream来写入头。

// Check if history file exists
if (fileExists) {
  // Appendable stream
  ObjectOutputStream out = new AppendingObjectOutputStream(new FileOutputStream(filePath, true));
} else {
  // Standard stream
  ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
}
登录后复制

通过使用AppendingObjectOutputStream,可以成功地将对象追加到现有的历史文件中,确保所有写入的对象都可以读取以正确的顺序。

以上是如何在 Java 中将对象追加到现有的 ObjectOutputStream?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板