首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgdx FileHandle读写不止一行

Libgdx FileHandle读写不止一行
EN

Stack Overflow用户
提问于 2016-05-17 17:59:52
回答 2查看 1K关注 0票数 0

好简单的问题..。我用文件句柄来写和读分数。得不偿失。但是,与缓冲的读取器不同,您不能使用read.line();那么如何在文件处理程序中编写和读取行呢?谢谢这是密码

代码语言:javascript
复制
    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
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-20 14:18:43

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

不可读的。我们在这里所做的是采取和使用字符串格式,以便我们可以清楚地看到如何写行。我们是先赢第一,第二输,所以如果我赢了10,他们输了5,线看起来就像这个10=5。这将保存到文件中。当我们读回文件时,我们读取10=5,然后在=上拆分这个字符串,剩下两个字符串105。然后,我们可以将这些解析为整数。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-05-17 19:17:13

在您的例子中,我建议您查看一下JSON格式。这里是一个官方的博士。基本上,您只需要创建简单的POJO类,在您的示例中,可以这样做:

代码语言:javascript
复制
public class GameResults {

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

}

然后,每当需要写入结果文件时,使用:

代码语言:javascript
复制
GameResults results = new GameResults();
results.setWins(winstring);
Json json = new Json();
FileHandle scores = Gdx.files.local("Score");
scores.writeString(json.toJson(results), false);

当你需要阅读时:

代码语言:javascript
复制
FileHandle scores = Gdx.files.local("Score");
winstringread = scores.readString(winstring);
Json json = new Json();
GameResults results = json.fromJson(GameResults, winstringread);

奖励:

此外,还可以使用Base64Coder类来解码结果文件。只是为了保护更多人免受黑客攻击。您只需要在读取文件时添加这一行:

代码语言:javascript
复制
Base64Coder.decodeString(RESULT_FILE.readString()), false)

当你写到:

代码语言:javascript
复制
RESULT_FILE.writeString(Base64Coder.encodeString(RESULT_FILE.readString()), false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37283273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档