Libgdx FileHandle 读写多行
Posted
技术标签:
【中文标题】Libgdx FileHandle 读写多行【英文标题】:Libgdx FileHandle reading and writing more than one line 【发布时间】:2016-05-17 17:59:52 【问题描述】:好又简单的问题.. 我使用文件句柄来写入和读取分数.. 胜负.. 但与缓冲阅读器不同的是,您不能使用 read.line();那么你如何在文件处理程序中写入和读取行? 谢谢这里是代码
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
【问题讨论】:
我在另一篇文章中的回答将帮助您将整个文件读入多行,将其写入新行是相同的,但将“\r\n”附加到您想要的每个字符串单独一行Libgdx file handle.. reading a single line 这也是我的问题,它没有说如何写两行?任何帮助.. 当你创建一个字符串时,只需添加 + "\r\n" 然后保存整个内容。String output = String.format("Wins: %d\r\nLosses: %d", wins, losses);
嘿,欠平衡...仍然需要您的帮助,伙计...我可以写入文件但不能读取它..叹息..这是最后一件事,我坚持阅读两行 ffs..请帮助您如何阅读文件???
您希望文件对用户可读还是只有程序可读?
【参考方案1】:
对于 libgdx 和您描述的这个特定问题。您可以读取和写入整个字符串并解析分隔符。
非人类可读。我们在这里所做的是采用和使用字符串格式,因此我们可以清楚地看到该行将如何编写。我们先赢了,输了,所以如果我赢了 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])
【讨论】:
谢谢你,我的朋友.. 再次完善一个简单的答案,没有复杂性.. 我明白你的意思我试过这个但没用...... nooby %d\r\n%d.. 猜因为那里可能有一些字符串代码......再次感谢帮助...... 0 和 1 索引也很有帮助,因为我从 1.. 开始 :( @Joe 没问题的人!我正在使用 libGDX 构建沙盒 MMO,例如 Terreria/Starbound,我可以理解 API 限制的挫败感。所以我通常也在想办法! 是的,伙计.. 知道有一个代码可以帮助你,你不知道,编码真的很令人沮丧......但是当你点击运行并且它工作的那一刻非常值得......: ) .. gdluck 你的游戏人希望它成功..【参考方案2】:在您的情况下,我建议您查看 JSON 格式。 Here 是官方文档。基本上你只需要创建简单的 POJO 类,在你的情况下它可能是这样的:
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)
还有你写的那一行:
RESULT_FILE.writeString(Base64Coder.encodeString(RESULT_FILE.readString()), false);
【讨论】:
以上是关于Libgdx FileHandle 读写多行的主要内容,如果未能解决你的问题,请参考以下文章