将许多java对象写入单个文件

如何将多个可序列化对象写入单个文件,然后在需要时读取一些对象?

您必须自己实现索引方面,否则可以这样做。 序列化对象时,您基本上会返回一个OutputStream ,您可以将其指向任何您想要的位置。 以这种方式将多个对象存储到文件中将是直截了当的。

当你想要读回“几个”物体时,很难实现。 您如何知道如何在包含您想要的特定对象的文件中寻找位置? 如果你总是按照你编写它们的顺序读取对象,那么从文件开头开始,这不会有问题。 但是如果你想随机访问流的“中间”中的对象,你将不得不想出一些方法来确定你感兴趣的特定对象的字节偏移量。

(这种方法与同步甚至Java本身无关;你必须设计一个符合你的要求和环境的方案。)

写作部分很容易。 你必须记住,你必须“立刻”写下所有对象。 您不能使用序列化对象创建文件,关闭它并再次打开它以附加更多对象。 如果您尝试它,您将在阅读时收到错误消息。

对于反序列化,我认为你必须处理完整的文件并保留你感兴趣的对象。其他的将被创建,但下次由gc收集。

Make Object[]用于存储对象。 它对我有用。

我使用平面文件数据库 (例如Berkeley DB Java版 )。 只需将节点编写为表中的行,如:

 Node ---- id value parent_id