很好且简单的问题..我使用文件句柄来写和读取分数..胜利和失败..但不像缓冲的读者你不能使用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
}
答案 0 :(得分:1)
对于libgdx和您正在描述的这个特定问题。您可以读取和写入整个字符串并解析分隔符。
非人类可读。我们在这里做的是采用和使用String格式,以便我们可以清楚地看到该行的编写方式。我们首先获得胜利分数,然后输掉第二名,所以如果我赢了10并且他们输了5,那么字符串就会像10=5
一样。这将保存到文件中。当我们阅读该文件时,我们会先阅读10=5
,然后将此字符串拆分为=
,并留下两个字符串10
和5
。然后我们可以将它们解析为整数。
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)