openFileOutput FileNotFoundException

时间:2011-02-17 20:58:57

标签: android

这是本周的菜鸟问题。我正在寻找更多的一般猜测,而不是特定的代码,也许希望Android人们正在观看并可以纠正这个:

Context.openFileOutput的SDK文档说:

  

打开与此Context的应用程序包关联的私有文件以进行编写。如果文件尚不存在,则创建该文件。

好的,听起来不错。我可以创建一个文件。除了这个方法也抛出一个FileNotFoundException,所以显然有些不对劲。如果找不到文件,为什么假定创建文件的函数如果找不到则抛出异常???

有点打败整个“创建文件......”的事情,不是吗?

4 个答案:

答案 0 :(得分:27)

在看这个之前我必须为跳跃而道歉。我在阅读文档时有点惊慌失措。经过一些测试,我发现openFileOutput()确实按照宣传的方式工作,创建一个文件,如果没有找到,不仅仅是因为我担心会抛出一个FnF异常。显然,如果Activity的应用程序目录不存在,则添加FnF throw。

再次,我的道歉,但希望,这可能会帮助那些被文档困惑的人。

答案 1 :(得分:1)

FileNotFoundException是在您尝试写入不存在或当前无法访问的文件时抛出的异常。什么时候会发生这种情况?

  • 也许你忘了关闭文件,并试图打开同一个文件。
  • 也许您尝试创建指向同一文件的多个FileOutputStream对象。

这将导致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" />

可能是你没事的那个