我的appplication中有一个树结构,需要在本地持久保存到文件中。我正在寻找一些关于实现这一目标的好方法的一些意见。
树基本上是一个文件树,FileNode和FolderNode对象扩展了Node对象。所有节点都有对其父节点的引用,而FolderNodes也有一组子节点。根是一个FolderNode,父级设置为null。
树可以有2到10万个节点之间的任何东西。宽度和深度可以是文件树的合理范围(通常比深度更宽)。
申请工作流程
正如您所知,该文件只读取一次,但在每次更改后都会写入,因此性能显然是一个问题。
对此有什么好的解决方案?感觉像JPA这样的嵌入式数据库如SQLite,Derby或ObjectDB将是最佳选择。是吗?在这种情况下,我应该如何建模数据库?
答案 0 :(得分:2)
其实我应该把这个放在评论bcos中这不是你问题的正确答案,但很抱歉让它回答。
树基本上是一个文件树,带有FileNode和FolderNode 扩展Node对象的对象。所有节点都有他们的参考 parent,FolderNodes也有一组子项。根是一个 将父级设置为null的FolderNode。
我建议你不要重新发明轮子并自己实现。看看JCR(Java Content Repository),Apache Jackrabbit是JCR的一个实现,它既有文件系统又有层次结构,还有版本控制等其他功能。
此外,它还有一个内置的持久性管理器,它将负责持久保存您的树。
答案 1 :(得分:0)
正确答案取决于您之后要对文件执行的操作。正如这里所解释的那样,最好的方法是将事物保存到/dev/null
(不保存),因为之后你没有使用它。
首先尝试看看是否真的需要单独保存。 java.io.File只使用100个字节,因此将整个内容保留在内存中并且只写出一次可能是值得的。