2012-03-10 2 views
0

Я использую Robocode для разработки резервуаров GA, которые развиваются, чтобы обеспечить лучшую производительность (достижение самых высоких уровней пригодности), и для этого мне нужно хранить информацию о каждом танке в одном файле.Java Create Configuration-like File

Класс танк будет иметь несколько переменных, таких как:

  • Скорость
  • Angular Momentum
  • Огневая мощь
  • Скорость сканирования

Я хотел бы способ, чтобы иметь возможность чтобы сохранить эти переменные в файле с именем «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. Даже некоторые «официальные» бия 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 на диск ,

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

+1

Сериализация очень хрупкая, если вы должны поддерживать эти объекты в долгосрочной перспективе. Очень легко ошибиться при модификации класса позже и потерять возможность читать в старых версиях, которые уже были написаны. Это действительно полезно только для передачи данных по проводу для RMI. –

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.