如何将多个可序列化对象写入单个文件,然后在需要时读取一些对象?
如何将多个可序列化对象写入单个文件,然后在需要时读取一些对象?
您必须自己实现索引方面,否则可以这样做。当你序列化一个对象时,你基本上会得到一个 OutputStream
,你可以指向任何你想要的地方。以这种方式将多个对象存储到文件中将是直截了当的。
当你想要读回“几个”物体时,很难实现。您如何知道如何在包含您想要的特定对象的文件中寻找位置?如果你总是按照你编写它们的顺序读取对象,那么从文件开头开始,这不会有问题。但是如果你想随机访问流的“中间”中的对象,你将不得不想出一些方法来确定你感兴趣的特定对象的字节偏移量。
(这种方法与同步甚至Java本身无关;你必须设计一个符合你的要求和环境的方案。)
写作部分很容易。你必须记住,你必须“立刻”写下所有对象。您不能使用序列化对象创建文件,关闭它并再次打开它以附加更多对象。如果您尝试它,您将在阅读时收到错误消息。
对于反序列化,我认为你必须处理完整的文件并保留你感兴趣的对象。其他的将被创建,但下次由gc收集。
使 Object[]
用于存储您的对象。它对我有用。
我用了一个 平面文件数据库 (例如 Berkeley DB Java版)。只需将节点编写为表中的行,如:
Node
----
id
value
parent_id