Когда используешь
file.createNewFile();
Я получаю следующее исключение
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
Мне интересно, есть ли createNewFile, который создает отсутствующие родительские каталоги?
new File("file.txt").getParentFile()
возвращаетnull
,new File("dir/file.txt").getParentFile()
возвращает то же самое, что иnew File("dir")
mkdirs
если файл, который вы пытаетесь создать, находится не в несуществующем каталоге, но мой вариант использования заключается в том, что я создаю несколько файлов, некоторые из которых имеют родительские каталоги, а другие нет.Ответ Джона работает, если вы уверены, что строка пути, с которой вы создаете файл, включает родительские каталоги, то есть если вы уверены, что путь имеет форму
<parent-dir>/<file-name>
.Если это не так, т.е. это относительный путь формы
<file-name>
, тоgetParentFile()
вернетсяnull
.Например
Поэтому, если ваш путь к файлу может включать или не включать родительские каталоги, вам будет безопаснее использовать следующий код:
источник
Начиная с java7, вы также можете использовать NIO2 API:
источник