2011-03-29 15 views
0

我需要一些方法来存储需要快速更改的配置/状态文件。每个键值对(键值)的状态都存储在该文件中。根据通信(数字多媒体广播)硬件的状态,状态需要改变得太快。快速更改配置/状态文件? JAVA

什么是最好的方式来创建这样的文件? INI? XML?任何现成的Java编写器?我无法使用数据库。

+0

来自DSP程序员的输入会很有帮助。 – 2011-03-29 02:45:15

+0

为什么不数据库? SQLite的? – 2011-03-29 03:11:56

+0

硬件(目前模拟器)没有标准化,我不知道有多少种或哪种产品将使用它。在任何情况下,我相当肯定硬件不会允许SQLlite安装:) – 2011-03-29 04:01:10

回答

0

在某些时候,变化太快的配置变成“程序状态”而不是配置。如果它如此迅速地变化,为什么你有信心可以有意义地将它写入文件系统,然后从文件系统中读取它?

多谈谈状态是数据的消费者是谁什么...

+0

其实我应该说我需要跟踪状态和配置分开。你问细节,所以我会试着说我在做什么。我正在使用DMB中继器,并且通过GUI同时制作协议和DMB控制器。 DMB控制器可以发送来自一个或多个快速更改源的控制信息,但速度不如其读取的数据快。 DMB GUI还必须读取有关中继器状态的数据,包括快速变化的SNR和电压升降,以便它可以更改接口(例如,GUI图像从警报中的绿色变为红色)。 – 2011-03-29 03:54:10

1

这听起来像你需要随机访问更新文件的各个部分往往不重写整个文件。设计二进制文件格式并使用RandomAccessFile API读取/写入它。您将希望为键和值使用固定数量的字节,以便您可以索引到文件的中间并更新该值,而无需重新编写所有以下记录。基本上,你将重新实现数据库如何存储表。

另一种替代方法是仅为每个文件存储一个键值对,以便重写该文件的成本很小。也许你可以考虑一种使用文件名作为键的方法,并且只在文件内容中存储值。

我倾向于尝试第二种选择,除非你处理超过几千条记录。

+0

我会说你的可能是迄今为止最好的解决方案。二进制hmm.Any现成的东西会很好。 – 2011-03-29 04:02:55

+0

对于现成解决方案,请查看关系数据库或“NoSQL”存储系统之一(http://en.wikipedia.org/wiki/NoSQL)。 – 2011-03-29 05:00:27

+0

请注意,有100%的Java关系数据库和NoSQL系统。如果你的硬件支持JavaSE,你应该可以运行其中的一个包。 – 2011-03-29 05:02:09

1

显而易见的解决方案是将“配置”信息放入Properties对象中,然后使用Properties.store(...)Properties.storeToXML(...)保存到文件输出流或写入器。

您还需要做一些事情以确保无论读取文件是否会看到一致的快照。例如,您可以每次写入一个新文件,并执行删除/重命名舞蹈以用旧的替换旧文件。

但是,如果文件的更新速率过高,您将创建大量光盘流量,并且您的应用程序速度会变慢。无论您使用哪种文件格式/ API,这都将应用(最终)。所以,你可能要考虑不写入文件。

+0

谢谢我可以使用这个建议的配置文件(和perhpas使用康斯坦丁的建议读取机器的数据) – 2011-03-29 03:53:19