Android:无法附加到ObjectOutputFile

时间:2015-03-13 07:37:51

标签: java android objectoutputstream

我试图将对象存储到数据文件中,我可以创建该文件,但是当我尝试将任何内容附加到文件时,它只是创建一个新文件并覆盖旧文件。

我的创建代码:

public void createObject(Object object)
{

    //File outFile = new File(Environment.getExternalStorageDirectory(), "foobar.data");
    try
    {

        File outFile = new File(Environment.getExternalStorageDirectory(), "foobar.data");
        ObjectOutput out = new ObjectOutputStream(new FileOutputStream(outFile));
        out.writeObject(object);
        out.close();
    }
    catch (IOException e)
    {
        Log.i("CreateObject", "Write - Catch error can't find .data");
    }
    finally
    {
        try
        {
            // out.close();
            Log.i("CreateObject", "Closed successfully!");
        }
        catch (Exception e)
        {
            Log.i("CreateObject", "Write - Failed to close object output stream.");
        }
    }

我尝试使用https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html处的代码,并将try替换为

FileOutputStream fos = new FileOutputStream("foobar.data");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(event);
oos.close();

但我的计划直接进入catch。捕获错误为java.io.FileNotFoundException: /foobar.data: open failed: EROFS (Read-only file system)

1 个答案:

答案 0 :(得分:0)

new FileOutputStream(...)有一个追加参数。如果您不使用它,或者没有将其设置为true,您将收到一个新文件。

然而无论如何都不会工作。您无法附加到对象流,至少在没有采取特殊措施的情况下。您在阅读时获得的所有信息均为StreamCorruptedException: invalid type code AC