反正你喜欢。您可以将其存储为对每个节点的文件系统顶部的其他文件的引用,或者编写使用块引用的文件系统驱动程序。
提供:
- 您的节点包含对持久存在的位置的引用
- 写节点的时候可以知道要写什么位置
你可以随心所欲地做。文件系统是使用基于磁盘的 inode 系统的树。
您始终可以使用带有标头的单个文件,并使用存储为无符号整数或映射到整数的值的字节偏移量。在文件中表示某个节点的开始......然后在每个节点的末尾有一个记录结束。
您还可以使用 XML 文件来引用其他位置或单个文件和XPath/XPointers。
<Node id="someNode">
<value>...</value>
<children>
<child xpath="/node[id=1]" />
<child xpath="/node[id=29]" />
但这意味着将您的值序列化为字符,如果它们只是二进制 blob (eww) 您的值可能是刚刚写入文件的二进制块的路径,例如:
<value>/path/to/mappable.bin</value>
查看从 XML 封装到用 C 编写的文件系统的所有内容,以了解整个树实现。
这个 XML 解决方案可能很臃肿,但如果您不需要速度,它就足够简单了。只是高级方法的一个例子。树存储是一个古老的问题,在各个层面都有解决方案。
树就是树。