Подтвердить что ты не робот

OpenFileOutput FileNotFoundException

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

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

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

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

Поражает поражение целиком "Создает файл...", не так ли?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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