2012-03-10 60 views
0

我正在使用Robocode来开发GA坦克,它可以提供更好的性能(实现最高的健身水平),为了做到这一点,我需要将每个坦克的信息存储在一个文件中。Java创建类似配置文件

类坦克将有几个变量,如:

  • 速度
  • 角动量
  • 消防电源
  • 扫描速度

我想一个办法能将这些变量保存在一个名为“settings.txt”的文件中,并能够在战斗后更新它们。

我想文件等格式:

robot(1): 
speed=12 
angMomentum=6 
firePower=2 
scanRate=10 

robot(2): 
speed=8 
angMomentum=4 
firePower=3 
scanRate=13 

什么是写这样一个文件的最佳方式,并能每次战斗后轻松地更新变量值?

很多谢谢。

回答

0

如果你想在一个大文件中的所有数据。也许最好使用JSON format之类的东西,因为你可以维护你的对象结构。使用变量,对象和数组。

有很多JSON阅读器和编写器可用。即使是一些“官方” BIJ json.org被发现here

您的JSON看起来是这样的:

{ 
    "tanks":[ 
     {"id": 1, "speed": 12, "angMomentum": 6, "firePower": 2, "scanRate": 10}, 
     {"id": 2, "speed": 8, "angMomentum": 4, "firePower": 3, "scanRate": 13} 
    ] 
} 
0

你真的应该考虑的Java Serialization,它可以让您存储和检索一个普通的Java对象到磁盘。

如果你真的想要创建自己的自定义格式,你必须自己实现一个解析器。您可以使用java.ioFile API将字符串写入磁盘,或者逐行读取文件。

+1

如果您必须长期维护这些对象,则序列化非常脆弱。稍后修改类时很容易出错,并且无法读取已写入的旧版本。这对于通过RMI线路传输数据确实很有用。 – 2012-03-10 17:07:35

0

你可以使用XStream序列化的对象像XML格式:

<tank> 
    <id>1</id> 
    <speed>12</speed> 
    <angMomentum>6</angMomentum> 
    <firePower>2</firePower> 
    <scanRate>10</scanRate> 
</tank> 

它很容易定义如何对象应在XML(可使用XStream的对象上批注或方法)来表示。

0

Properties类具有您需要的所有内容:Using Properties to store configuration values.它可以为您处理读取和写入磁盘的工作,并以Map的形式为您存储和检索值。无需序列化,这在长期存储或XML/JSON解析方面非常脆弱。