Ответ Джона работает, если вы уверены, что строка пути, с которой вы создаете файл, включает родительские каталоги, то есть если вы уверены, что путь имеет форму <parent-dir>/<file-name> .
Если это не так, т.е. это относительный путь формы <file-name>, то getParentFile()вернется null.
Например
File f = new File("dir/text.txt");
f.getParentFile().mkdirs(); // works fine because the path includes a parent directory.
File f = new File("text.txt");
f.getParentFile().mkdirs(); // throws NullPointerException because the parent file is unknown, i.e. `null`.
Поэтому, если ваш путь к файлу может включать или не включать родительские каталоги, вам будет безопаснее использовать следующий код:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()возвращаетnull,new File("dir/file.txt").getParentFile()возвращает то же самое, что иnew File("dir")