Libgdx FileHandle读写多行

时间:2016-05-17 17:59:53

标签: java libgdx save line filehandle

很好且简单的问题..我使用文件句柄来写和读取分数..胜利和失败..但不像缓冲的读者你不能使用read.line();那么如何在filehandler中编写和读取行? thanx这里是代码

    private void writeSaveData()
{
    winstring = Integer.toString(wins);
    lossstring = Integer.toString(losses);

    FileHandle scores = Gdx.files.local("Score");
    scores.writeString(winstring, false);
    // I want to add another line here for lossess
}


private void loadScores()
{
    FileHandle scores = Gdx.files.local("Score");
    winstringread= scores.readString(winstring);
    wins = Integer.parseInt(winstringread);
    // same here add line to read lossess
}

2 个答案:

答案 0 :(得分:1)

对于libgdx和您正在描述的这个特定问题。您可以读取和写入整个字符串并解析分隔符。

非人类可读。我们在这里做的是采用和使用String格式,以便我们可以清楚地看到该行的编写方式。我们首先获得胜利分数,然后输掉第二名,所以如果我赢了10并且他们输了5,那么字符串就会像10=5一样。这将保存到文件中。当我们阅读该文件时,我们会先阅读10=5,然后将此字符串拆分为=,并留下两个字符串105。然后我们可以将它们解析为整数。

private void writeSaveData()
{
    String saveString = String.format("%d=%d", wins, losses);
    FileHandle scores = Gdx.files.local("Score");
    scores.writeString(saveString, false);
}


private void loadScores()
{
    FileHandle scores = Gdx.files.local("Score");
    String loaddedString = scores.readString(winstring);
    String[] scores = loadedString.split("=");
    wins = Integer.parseInt(scores[0]);
    losses = Integer.parseInt(scores[1])    
}

答案 1 :(得分:0)

在你的情况下,我建议你看一下JSON格式。 Here是官方文档。基本上你只需要创建简单的POJO类,在你的情况下它可能是这样的:

 Object value = obj.get(key);
  //fill the Pizza object with data
   pizza.setName(key);
  JSONObject jsonobject2 =  obj.getJSONObject(key);
    pizza.setIngredients(jsonobject2.getString("ingredients"));
    pizza.setImage(jsonobject2.getString("image"));     

然后,无论何时需要写入结果文件,您都可以使用:

public class GameResults {

   private int wins;
   private int losses;
   ...
   public int getWins() {
       return wins;
   }
   public void setWins(int wins){
       this.wins=wins; 
   }
  ...

}

当你需要阅读时:

GameResults results = new GameResults();
results.setWins(winstring);
Json json = new Json();
FileHandle scores = Gdx.files.local("Score");
scores.writeString(json.toJson(results), false);

加成:

此外,您可以使用FileHandle scores = Gdx.files.local("Score"); winstringread = scores.readString(winstring); Json json = new Json(); GameResults results = json.fromJson(GameResults, winstringread); 类来解码结果文件。只是为了更多地受到黑客攻击。您只需在读取文件时添加此行:

Base64Coder

和你写的那一行:

Base64Coder.decodeString(RESULT_FILE.readString()), false)