问题描述
我需要一些方法来存储需要快速更改的配置/状态文件。 每个键值对(键值)的状态存储在该文件中。 根据通信(数字多媒体广播)硬件的状态,状态需要相当快地改变。
创建这样一个文件的最佳方法是什么? INI? XML? Java中的任何现成的文件编写者? 我不能使用数据库。
1楼
听起来你需要随机访问来频繁更新文件的各个部分,而无需重写整个文件。 设计二进制文件格式并使用RandomAccessFile API来读/写它。 您将要使用固定数量的字节用于键和值,以便您可以索引到文件的中间并更新值,而无需重新写入以下所有记录。 基本上,您将重新实现数据库如何存储表。
另一种替代方案是仅为每个文件存储单个键值对,使得重写文件的成本较小。 也许你可以想办法使用文件名作为键,只在文件内容中存储值。
我倾向于尝试第二种选择,除非你处理超过几千条记录。
2楼
显而易见的解决方案是将“配置”信息放入Properties
对象,然后使用Properties.store(...)
或Properties.storeToXML(...)
保存到文件输出流或编写器。
您还需要做一些事情来确保读取文件的任何内容都能看到一致的快照。 例如,您可以每次写入一个新文件并执行删除/重命名舞蹈以将旧文件替换为新文件。
但是,如果文件的更新速率过高,您将创建大量的光盘流量,并且您的应用程序速度受到限制。 无论您使用何种文件格式/ API,这都将适用(最终)。 因此,您可能想要考虑不写入文件。
3楼
在某些时候,变化太快的配置变为“程序状态”而不是配置。 如果它变化如此之快,为什么你有信心你可以有意义地将它写入文件系统,然后从文件系统中读取它?
详细说明状态是数据的消费者是谁......