我正在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。我还没有找到解决此问题的方法。有人可以给我一些提示,告诉我为什么会出现此异常。也许我需要添加一些我不知道的权限类型?
答案 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"?