Android Studio内部存储FileOutputStream FileNotFound

时间:2018-12-12 16:35:55

标签: android ioexception fileoutputstream

我正在android studio上工作,我想在内部存储中写入/存储文件。我知道在堆栈溢出时有几个类似的问题。我已经设法从这些代码中获取了这些代码。

public static void writeObj(Alarm alarm, Context context){
    FileOutputStream fos = null;
        ObjectOutputStream oos = null;
        try{
            fos = new FileOutputStream("ArrayList.txt", true);
            oos = new ObjectOutputStream(fos);
            oos.writeObject(alarm);
            oos.flush();
            oos.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
             e.printStackTrace();
        }

此代码不适用于我。我设法弄清楚我收到FileNotFound异常,因为FileOutputStream无法创建我的文件。因此,我做了一些进一步的挖掘工作,并将其添加到我的try / catch上方(在FileOpenOutputStream中用f替换“ ArrayList.txt”)。

    File f = new File(context.getFilesDir(),"ArrayList.txt");
            try {
                f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }

这为我创建了文件,使我超越了FileNotFound异常捕获,但是现在我得到了IOException。我还没有找到解决此问题的方法。有人可以给我一些提示,告诉我为什么会出现此异常。也许我需要添加一些我不知道的权限类型?

1 个答案:

答案 0 :(得分:1)

请参阅此处的文档-https://developer.android.com/reference/java/io/ObjectOutputStream

  

仅支持java.io.Serializable接口的对象可以写入流中。

因此,您必须为Alarm类实现Serializable接口,并且其所有字段也必须是Serializable才能使用ObjectOutputStream。

您可以从文档中找到更多信息。

其他参考

Serialization Java: which classes need to "implement Serializable"?

https://stackoverflow.com/a/28789107/9640177