1

我对 Android 开发真的很陌生,我的第一个项目是一个简单的游戏,它有一个显示和一个逻辑部分。我想在游戏中添加一个保存功能,但我在实现时遇到了问题。

我想用 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”,它也会说同样的错误。

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

4

2 回答 2

3

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

于 2012-01-05T18:30:01.900 回答
2

使用文件名创建一个 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
}

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

享受!

于 2012-01-05T19:33:29.383 回答