gpt4 book ai didi

java - Android:无法在文件中保存超过 195 的数字

转载 作者:行者123 更新时间:2023-12-01 10:36:24 24 4
gpt4 key购买 nike

对于我的游戏,我将用户玩过的游戏数量存储在内部存储上的文件中。这完全有效,直到存储了数字 195,之后无论玩了多少场游戏,它都不会增加。

public void saveNumGames(){
Log.d("saveNumGames", "Called");
int numGames;
File numGamesFile = new File(mainActivity.getFilesDir(), "numGames");
try {

BufferedInputStream BIS = new BufferedInputStream(new FileInputStream(numGamesFile));
numGames = BIS.read();
}catch (Exception e) {
e.printStackTrace();
numGames = 0;
}
try{
numGames++;
Log.d("numGames", Integer.toString(numGames));
FileOutputStream fos = new FileOutputStream(numGamesFile);
PrintWriter PW = new PrintWriter(new OutputStreamWriter(fos));
PW.write(numGames);
PW.flush();
PW.close();
if(numGames==12){
Games.Achievements.unlock(MainActivity.apiClient, "CgkIlcXhyp4YEAIQDA");
} else if(numGames==50){
Games.Achievements.unlock(MainActivity.apiClient, "CgkIlcXhyp4YEAIQDQ");
}
}catch (Exception e){
e.printStackTrace();
}
}

我的思考过程是,这是由于数字 195 是字节(或位?)中可存储的最大值引起的。如果是这样,我应该采取什么措施来防止出现此数量上限。

最佳答案

首先你使用了两个错误的方法。第一个是 numGames = BIS.read(); read() 方法专为只读一个字节而设计。另一个方法 PW.write(numGames) 方法 write 其参数是 int 指定要写入的字符。它应该有效:

  public static void saveNumGames() {
Log.d("saveNumGames", "Called");
int numGames;
File numGamesFile = new File(mainActivity.getFilesDir(), "numGames");
try {
numGames = new Integer(new String(Files.readAllBytes(Paths.get(mainActivity.getFilesDir() + "numGames"))));
} catch (Exception e) {
e.printStackTrace();
numGames = 0;
}

try (FileOutputStream fos = new FileOutputStream(numGamesFile)) {
numGames++;
Log.d("numGames", Integer.toString(numGames));
PrintWriter PW = new PrintWriter(fos);
PW.write(String.valueOf(numGames));
PW.flush();
PW.close();
if (numGames == 12) {
Games.Achievements.unlock(MainActivity.apiClient, "CgkIlcXhyp4YEAIQDA");
} else if (numGames == 50) {
Games.Achievements.unlock(MainActivity.apiClient, "CgkIlcXhyp4YEAIQDQ");
}
} catch (Exception e) {
e.printStackTrace();
}
}

关于java - Android:无法在文件中保存超过 195 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com