这是本周的菜鸟问题。我正在寻找更多的一般猜测,而不是特定的代码,也许希望Android人们正在观看并可以纠正这个:
Context.openFileOutput的SDK文档说:
打开与此Context的应用程序包关联的私有文件以进行编写。如果文件尚不存在,则创建该文件。
好的,听起来不错。我可以创建一个文件。除了这个方法也抛出一个FileNotFoundException,所以显然有些不对劲。如果找不到文件,为什么假定创建文件的函数如果找不到则抛出异常???
有点打败整个“创建文件......”的事情,不是吗?
答案 0 :(得分:27)
在看这个之前我必须为跳跃而道歉。我在阅读文档时有点惊慌失措。经过一些测试,我发现openFileOutput()
确实按照宣传的方式工作,将创建一个文件,如果没有找到,不仅仅是因为我担心会抛出一个FnF异常。显然,如果Activity的应用程序目录不存在,则添加FnF throw。
再次,我的道歉,但希望,这可能会帮助那些被文档困惑的人。
答案 1 :(得分:1)
FileNotFoundException是在您尝试写入不存在或当前无法访问的文件时抛出的异常。什么时候会发生这种情况?
这将导致FileNotFoundException。
无论如何,您可以在函数声明的末尾插入一个throws FileNotFoundException
,您可以在其中调用openFileOutput(以及调用此函数的其他函数)。
答案 2 :(得分:1)
如果您使用MODE_APPEND,它也可能会抛出,这会附加到现有文件并且该文件不存在。
答案 3 :(得分:-4)
您是否插入了正确的权限? 见http://developer.android.com/reference/android/Manifest.permission.html 以供参考。 我想
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
可能是你没事的那个