Java создает конфигурационный файл - PullRequest
0 голосов
/ 10 марта 2012

Я использую 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

Как лучше всего написать такой файл и иметь возможность легко обновлять значения переменных после каждого сражения?

Большое спасибо.

Ответы [ 4 ]

0 голосов
/ 10 марта 2012

В классе Properties есть все, что вам нужно: Использование свойств для хранения значений конфигурации. Он обрабатывает чтение и запись на диск для вас и работает как Map для хранения и получения значений.,Нет необходимости в сериализации, которая является чрезвычайно хрупкой с точки зрения долгосрочного хранения или синтаксического анализа XML / JSON.

0 голосов
/ 10 марта 2012

Вам действительно стоит взглянуть на Java Serialization, которая позволяет вам сохранять и извлекать простой Java-объект на диск.

Если вы действительно хотите создать свой собственный формат, вам придется самостоятельно реализовать синтаксический анализатор. Вы можете использовать API java.io и File для записи строки на диск или чтения из файла, например, построчно.

0 голосов
/ 10 марта 2012

Вы можете использовать XStream для сериализации ваших объектов в формат XML, например:

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

Очень просто определить, как объект должен быть представлен в XML (Вы можете использовать аннотацииили методы объекта XStream).

0 голосов
/ 10 марта 2012

Если вы хотите, чтобы все ваши данные были в одном большом файле. Может быть, это хорошая идея использовать что-то вроде JSON-формата , потому что вы можете поддерживать структуру вашего объекта. Используйте переменные, объекты и массивы.

Есть много читателей и авторов JSON. Даже некоторые «официальные» бижи json.org можно найти здесь

Ваш JSON может выглядеть так:

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