关于标准字符串和整数数据的最佳文件格式?

时间:2011-06-20 19:49:11

标签: java file-format

对于我的项目,我需要存储有关协议的信息(发送的数据(很可能是整数)及其发送的顺序)以及可能格式化的信息:
'ID''STRING''附加整数数据'
这个信息将由Java程序读取并存储在内存中进行处理,但我不知道将这些数据存储在哪个最合理的格式中?

编辑:这是一些额外的信息:
1)我将在游戏服务器中使用这些数据 2)由于它是游戏服务器,速度不是主要考虑因素,因为这些数据将在启动期间被主要读取和使用,这不应经常发生。
3)内存消耗我想保持最低限度 4)第二个数据“示例”将用作“字典”,以查找特定游戏内项目的名称,其统计数据和其他整数数据(因此可能会变得非常大,与包含协议信息的第一个数据不同,其中每个文件只会记录小协议,例如登录协议。) 5)是的,我希望数据是“人类可编辑的”。

编辑2:这是我做出的选择:
JSON - 对于协议说明
CSV - 对于词典

4 个答案:

答案 0 :(得分:3)

有许多因素可能会受到影响 - 这些事情可能会帮助您解决这个问题:

1)速度/内存使用:如果数据需要加载非常快或非常大,您可能需要考虑滚动自己的二进制格式。

2)可移植性/兼容性:对#1进行平衡是您可能希望在其他地方使用数据的考虑因素,而程序不会读取自定义二进制格式。在这种情况下,你的重击手可能是CSV,dBase,XML和我个人最喜欢的JSON。

3)简单:像CSV这样的分隔格式易于手动阅读,编写和编辑。使用正确转义的双引号或选择不会出现在数据中的分隔符。

如果您可以发布有关您的情况的更多信息以及这些因素的重要性,我们可能会为您提供更多指导。

答案 1 :(得分:0)

XML,JSONCSV怎么样?

答案 2 :(得分:0)

我使用XML编写了类似的协议规范。 (可用here。)

我认为这是一个很好的匹配,因为它捕获了指定消息/网络包/字段等的层级性质。字段顺序定义明确等等。

我甚至编写了一个代码生成器,它使用XSLT中每种消息类型的方法生成消息发送/接收类。

我看到的唯一缺点是冗长。如果你有一个非常简单的规范结构,我建议你使用一些简单的自制格式,并使用你选择的解析器生成器为它编写一个解析器。

答案 3 :(得分:0)

除了其他人建议的格式(CSV,XML,JSON等)之外,您可以考虑将信息存储在Java属性文件中。 (请参阅java.util.Properties类。)代码已经存在,因此您需要弄清楚的是要使用的属性名称(或名称前缀)。

Properties类还提供以简单XML格式存储/加载属性。