我试图将对象存储到数据文件中,我可以创建该文件,但是当我尝试将任何内容附加到文件时,它只是创建一个新文件并覆盖旧文件。
我的创建代码:
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)
答案 0 :(得分:0)
new FileOutputStream(...)
有一个追加参数。如果您不使用它,或者没有将其设置为true,您将收到一个新文件。
然而无论如何都不会工作。您无法附加到对象流,至少在没有采取特殊措施的情况下。您在阅读时获得的所有信息均为StreamCorruptedException: invalid type code AC
。