当前位置: 首页 > 面试题库 >

如何附加到现有的java.io.ObjectStream?

扶誉
2023-03-14
问题内容

至于现在,我将java.io.StreamCorruptedException在尝试附加对象时得到提示。我已经在互联网上搜索了一种解决方法。到目前为止,我发现的答案是无法完成。解决此问题的一种方法是将对象写入列表,然后将列表写入文件。

但是,每次添加新对象时,我都必须覆盖该文件。这似乎不是加班的最佳解决方案。

有没有一种方法可以将对象追加到现有对象流?


问题答案:

实际上,这很容易做到。当您添加到现有流时,需要使用ObjectOutStream的子类,该子类将重写,writeStreamHeader以便在文件中间不写入第二个标头。例如

class NoHeaderObjectOutputStream extends ObjectOutputStream {
  public NoHeaderObjectOutputStream(OutputStream os) {
    super(os);
  }
  protected void writeStreamHeader() {}
}

然后,只需使用标准的ObjectInputStream即可读取整个文件。



 类似资料:
  • 我在共享记忆方面遇到了麻烦。我有一个进程可以创建和写入共享内存段。但我无法获得第二个进程来附加相同的现有段。如果我使用IPC_CREATE标志,我的第二个进程可以创建一个新的共享段,但我需要附加到第一个进程创建的现有共享段。 这是我在第二个过程中的代码: 感谢任何人能给予的任何帮助。我已经为此挣扎了几个小时--这意味着我可能在做一些非常愚蠢的事情,当有人指出我的错误时,最终会让自己感到尴尬:-)

  • 问题内容: 我想将键值对作为查询参数附加到现有URL。虽然我可以通过检查URL是否存在查询部分还是片段部分并通过跳过一堆if子句来执行追加来做到这一点,但是我想知道是否有通过Apache进行清理的干净方法公共图书馆或类似的东西。 将是 将是 将是 将是 我之前已经运行过多次这种情况,并且我希望做到这一点而不会以任何方式破坏URL。 问题答案: 这可以通过使用java.net.URI类使用现有实例中

  • 文件名太复杂和随机,我无法使用api获取。所以我想使用saveAstextfile,因为文件名并不复杂且规则,但我不知道如何在同一目录中追加文件?感谢您抽出时间。

  • 问题内容: 我想将所有记录上的代码更新为当前的代码,再加上_standard任何想法? 因此,例如,如果代码是apple_1和apple_2,则我需要将它们设置为apple_1_standard和apple_2_standard 前: 伪查询: 预期结果: 问题答案: 您需要在MySQL中使用该函数进行字符串连接:

  • 问题内容: 如我所见,java mongo驱动程序不提供从现有gridFS文件获取的功能 我必须直接创建或使用方法。 是否缺少Java驱动程序或gridfs的限制? 除了创建新文件/删除旧文件之外,您能否建议其他解决方法? 谢谢 问题答案: GridFS不是MongoDB的核心功能,而是存储带有随附元数据的二进制数据的约定。您应该能够以通常的方式修改集合中的任何文档,同时保持相应文档的完整性。主要

  • 问题内容: 我正在写某种生成加密日志文件的记录器。不幸的是,密码学不是我的强项。现在,我可以向文件写入几条消息,然后关闭文件。然后我可以打开它,附加一些消息,再次关闭,解密后,我在文件中间看到填充字节。有什么方法可以处理加密文件,而不必每次我想添加一些消息时都对其解密? 编辑 :更多细节。当前实现使用CipherOutputStream。据我了解,没有办法 寻求 使用它。如果我将控制输出数据大小可