【问题标题】:Java Create Configuration-like FileJava 创建类似配置的文件
【发布时间】:2012-03-10 15:06:22
【问题描述】:

我正在使用 Robocode 开发 GA 坦克,以提供更好的性能(达到最高的健身水平),为此我需要将每个坦克的信息存储在一个文件中。

Tank 类将有几个变量,例如:

  • 速度
  • 角动量
  • 火力
  • 扫描速率

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

我希望文件格式如下:

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

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

编写这样的文件并在每次战斗后轻松更新变量值的最佳方法是什么?

非常感谢。

【问题讨论】:

    标签: java file variables config robocode


    【解决方案1】:

    如果您希望将所有数据放在一个大文件中。也许使用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}
        ]
    }
    

    【讨论】:

      【解决方案2】:

      您真的应该研究一下 Java Serialization,它可以让您将纯 Java 对象存储和检索到磁盘。

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

      【讨论】:

      • 如果您必须长期维护这些对象,则序列化非常脆弱。以后修改类时很容易出错,失去阅读已经写好的旧版本的能力。它真的只适用于通过 RMI 的线路传输数据。
      【解决方案3】:

      您可以使用XStream 将您的对象序列化为 XML 格式,例如:

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

      定义对象应该如何在 XML 中表示非常容易(您可以在 XStream 对象上使用注释或方法)。

      【讨论】:

        【解决方案4】:

        Properties 类拥有您所需的一切:Using Properties to store configuration values. 它为您处理磁盘读取和写入,并作为Map 为您存储和检索值。不需要序列化,序列化在长期存储方面非常脆弱,或者 XML/JSON 解析。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-15
          • 2020-11-24
          • 1970-01-01
          • 2013-07-05
          相关资源
          最近更新 更多