OpenFileOutput FileNotFoundException

Это мой вопрос о нобе за неделю. Я больше ищу больше общих предположений, чем определенный код, и, возможно, надеюсь, что люди Android будут смотреть и могут исправить это:

Документация SDK для Context.openFileOutput гласит:

Откройте частный файл, связанный с этим пакетом приложений Context для записи. Создает файл, если он еще не существует.

ОК, это звучит хорошо. Я могу создать файл. Кроме того, этот метод также генерирует исключение FileNotFoundException, поэтому, очевидно, что-то не так. Почему функция, которая должна создать файл, если он не найден, генерирует исключение, если файл не найден ???

Kinda поражает то, что целая вещь «Создает файл …», не так ли?

Solutions Collecting From Web of "OpenFileOutput FileNotFoundException"

Я должен извиниться перед прыжком, прежде чем я посмотрю на это. Я как бы запаниковал, читая документацию. После некоторого тестирования я обнаружил, что openFileOutput() действительно работает как рекламируемый и создаст файл, если он не найден, а не просто выбросить исключение FnF, как я боялся. По-видимому, бросок FnF был добавлен в случае, если каталог приложения Activity не существует.

Опять же, мои извинения, но, надеюсь, это может помочь другим, которые смущены документацией.

FileNotFoundException – это исключение, возникшее в случае, если вы пытаетесь записать файл, который не существует или к которому в настоящий момент не доступен доступ. Когда еще это произойдет?

  • Возможно, вы забыли закрыть файл и попытались открыть тот же файл.
  • Возможно, вы попытались создать несколько объектов FileOutputStream, указывающих на один и тот же файл.

Это приведет к исключению FileNotFoundException.

В любом случае, вы можете вставить throws FileNotFoundException в конце объявления функции, где вы вызываете openFileOutput (и другим функциям, вызывающим эту функцию).

Возможно также выбрасывается, если вы используете MODE_APPEND, который добавляется к существующему файлу, и файл не существует.

Вы вставили правильное разрешение? См. http://developer.android.com/reference/android/Manifest.permission.html для справки. я думаю

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

Может быть тот, с которым вы в порядке