Java создает конфигурационный файл

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

Решение

Если вы хотите, чтобы все ваши данные в одном большом файле. Может быть, это хорошая идея использовать что-то вроде формата 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}
    ]
}

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

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

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

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

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

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

Другие вопросы по тегам