Android studio内部存储FileOutputStream FileNotFound
我正在android studio上工作,我想在内部存储器中写入/存储一个文件。我知道在堆栈溢出上有几个类似的问题。我已经设法从那些人那里得到了这个代码Android studio内部存储FileOutputStream FileNotFound,android,ioexception,fileoutputstream,Android,Ioexception,Fileoutputstream,我正在android studio上工作,我想在内部存储器中写入/存储一个文件。我知道在堆栈溢出上有几个类似的问题。我已经设法从那些人那里得到了这个代码 public static void writeObj(Alarm alarm, Context context){ FileOutputStream fos = null; ObjectOutputStream oos = null; try{ fos = new FileOut
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”)
这为我创建了文件,让我通过了FileNotFound异常捕获,但现在我得到了一个IOException。我还没有找到解决这个问题的办法。有人能告诉我为什么我会得到这个例外的一些提示吗。是否有某种类型的权限需要添加到清单文件中,我对此一无所知?请参阅此处的文档- 只有支持java.io.Serializable接口的对象才能写入流 所以,您必须为Alarm类实现可序列化接口,并且它的所有字段也必须是可序列化的,以便使用ObjectOutputStream
File f = new File(context.getFilesDir(),"ArrayList.txt");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
您可以从文档中找到更多信息
其他参考资料
我认为在创建
FileOutputStream
时,您应该给出完整路径。请注意,您创建的文件位于应用程序的内部存储器(context.getFilesDir()
)中,您不需要任何额外权限。