libGDX ObjectOutputStream写入因FileNotFoundException而失败

时间:2015-02-19 01:24:40

标签: java android libgdx

我想用ObjectOutputStream在我的Libgdx游戏中保存我的设置。这适用于桌面。 但是当我运行Android应用程序时它崩溃了,因为:

  

02-19 12:36:33.500:W / System.err(20329):java.io.FileNotFoundException:/save.data:open failed:ENOENT(没有这样的文件或目录)

如何将它保存到assets文件夹中的android包中?

我的代码是:

public void saveSettingsOut(){
    try{
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data/save.set"));
        out.writeObject(settingsMap);
        out.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}

请不要建议我使用偏好设置,因为我希望编码数据。

或者有更好的方法可以做到这一点吗?我想保存两个带有整数的哈希映射和一个带有布尔值的哈希映射。

1 个答案:

答案 0 :(得分:0)

在Android上运行时,应用程序的工作目录中不存在“data”目录。在Libgdx应用程序的桌面和Android(以及iOS和GWT)版本中,文件系统布局非常不同。您应该使用Libgdx API来获取存储系统的正确部分。请参阅Libgdx本地文件处理矩阵:https://github.com/libgdx/libgdx/wiki/File-handling#file-storage-types

您想要Libgdx“本地”文件存储,因此请尝试使用:

new FileOutputStream(Gdx.files.local("save.set"))