2012-03-10 93 views
0

我正在使用Robocode來開發GA坦克,它可以提供更好的性能(實現最高的健身水平),爲了做到這一點,我需要將每個坦克的信息存儲在一個文件中。Java創建類似配置文件

類坦克將有幾個變量,如:

  • 速度
  • 角動量
  • 消防電源
  • 掃描速度

我想一個辦法能將這些變量保存在一個名爲「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閱讀器和編寫器可用。即使是一些「官方」 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} 
    ] 
} 
0

你真的應該考慮的Java Serialization,它可以讓您存儲和檢索一個普通的Java對象到磁盤。

如果你真的想要創建自己的自定義格式,你必須自己實現一個解析器。您可以使用java.ioFile API將字符串寫入磁盤,或者逐行讀取文件。

+1

如果您必須長期維護這些對象,則序列化非常脆弱。稍後修改類時很容易出錯,並且無法讀取已寫入的舊版本。這對於通過RMI線路傳輸數據確實很有用。 – 2012-03-10 17:07:35

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解析方面非常脆弱。