new FileOutputStream(f)
создаст файл в большинстве случаев, но, к сожалению, вы получите FileNotFoundException
если файл существует, но является каталогом, а не обычным файлом, не существует, но не может быть создан или не может быть открыт по любой другой причине
от Javadoc
Другими словами, может быть много случаев, когда вы получите FileNotFoundException, означающее «Не удалось создать файл», но вы не сможете найти причину, по которой создание файла не удалось.
Решение состоит в том, чтобы удалить все вызовы File API и использовать вместо них API-интерфейс Files, поскольку он обеспечивает намного лучшую обработку ошибок. Обычно заменяют любой new FileOutputStream(f)
на Files.newOutputStream(p)
.
В тех случаях, когда вам необходимо использовать File API (поскольку вы используете внешний интерфейс, например, с помощью File), использование Files.createFile(p)
является хорошим способом убедиться, что ваш файл создан правильно, а если нет, вы бы знали, почему это не сработало. Некоторые люди прокомментировали выше, что это избыточно. Это правда, но вы получаете лучшую обработку ошибок, которая может быть необходима в некоторых случаях.