将socres保存到highscore.sav文件,它在桌面上运行正常,但在android上运行不正常。为什么呢?
String fileName = "highScores.sav";
file = new File(fileName);
public static void save(){
try{
FileOutputStream fileOut = new FileOutputStream(file);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(gd);
out.close();
}
catch(Exception e){
e.printStackTrace();
System.out.println(e);
Gdx.app.exit();
}
}
public static void load(){
try{
if(!saveFileExists()){
init();
return;
}
FileInputStream fileIn = new FileInputStream(file);
ObjectInputStream in = new ObjectInputStream(fileIn);
gd = (GameData) in.readObject();
in.close();
}
catch(Exception e){
e.printStackTrace();
System.out.println(e);
Gdx.app.exit();
}
}
收到错误:java.io.FileNotFoundException:/highScores.sav:open failed:EROFS(只读文件系统)
答案 0 :(得分:0)
您是否已将权限添加到Android应用以允许写入存储空间?
答案 1 :(得分:0)
这不起作用,因为您尚未指定要保存的目录。 Android严格限制应用在哪里写文件。
您不需要任何权限来读取或写入内存。但是你需要指定内部存储器(在libgdx中称为本地存储器)。
Libgdx已经直接为您处理这个问题,因此您不需要区分桌面和Android。 This explains exactly how to do it.您只需要写入文件的字符串或字节,libgdx API即可处理其余文件。
FileHandle file = Gdx.files.local(filename);
file.writeString(stringToWrite, false);
如果您想继续使用编写文件的方法,可以像这样获取文件的路径:
String fileName = "highScores.sav";
file = new File(Gdx.files.getLocalStoragePath () + "/" + fileName);