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.