openFileOutput FileNotFoundException

这是我一周的问题。 我正在寻找更多的一般猜测比特定的代码,也许希望Android的人都在看,可以纠正这一点:

Context.openFileOutput的SDK文档说:

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

好的,这听起来不错。 我可以创build一个文件。 除了这个方法也会抛出一个FileNotFoundExceptionexception,所以显然是不对的。 为什么会创build一个文件,如果没有find一个文件,如果没有find该文件抛出exception?

有点击败整个“创build文件…”的东西,不是吗?

Solutions Collecting From Web of "openFileOutput FileNotFoundException"

在看这个之前,我必须为跳跃道歉。 阅读文档时,我有点恐慌。 经过一番testing,我发现openFileOutput()实际上是按照广告的方式工作,如果没有find它, 将会创build一个文件,而不是像我担心的那样抛出一个FnFexception。 显然,FnF投掷是在Activity的应用程序目录不存在的情况下添加的。

再一次,我的道歉,但希望,这可能会帮助其他人被文件混淆。

FileNotFoundException是在您尝试写入不存在或不能当前访问的文件的情况下抛出的exception。 这种情况何时会发生?

  • 也许你忘了closures文件,并试图打开相同的文件。
  • 也许你试图创build指向同一个文件的多个FileOutputStream对象。

这些将导致FileNotFoundException。

无论如何,您可以在您调用openFileOutput(以及调用此函数的其他函数)的函数声明末尾插入throws FileNotFoundException

如果您使用MODE_APPEND,可能还会抛出,该MODE_APPEND附加到现有文件,并且该文件不存在。

你有没有插入正确的权限? 请参阅http://developer.android.com/reference/android/Manifest.permission.html以供参考。 我认为

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

可能是你很好的一个