Android和ObjectOutputStream到资源文件

我是Android开发的新手,我的第一个项目是一个简单的游戏,它有一个显示器和一个逻辑部分。 我想为游戏添加一个保存function,但我遇到了这个问题。

我想这样做,使用ObjectOutputStream(只包含重要部分)

String filename = "res/raw/testfile.txt"; try { FileOutputStream fileout = new FileOutputStream(filename); ObjectOutputStream out = new ObjectOutputStream(fileout); out.writeObject(...logic objects...); } catch (Exception ex) { //show the error message } 

但我总是得到一个错误信息,说“没有这样的档案……”。 即使我在原始目录中创建“testfile.txt”,它也会出现相同的错误。

请帮帮我,我做错了什么?

使用文件名创建File对象,然后检查文件是否存在。 如果没有,则创建该文件。 如果是,您可以覆盖或提示用户是否要覆盖它。 然后将File对象传递给FileOutputStream而不是文件名。 像这样的东西:

 String filename = "res/raw/testfile.txt"; try { File file = new File(filename); if (!file.exists()) { if (!file.createNewFile()) { throw new IOException("Unable to create file"); } // else { //prompt user to confirm overwrite } FileOutputStream fileout = new FileOutputStream(file); ObjectOutputStream out = new ObjectOutputStream(fileout); out.writeObject(...logic objects...); } catch (Exception ex) { //show the error message } 

还要确保关闭输出流以防止任何资源泄漏。

请享用!

您无法写入资源目录。 您可能应该写入内部存储。 关于数据存储的文档应该会有所帮助。