Ответ Джона работает, если вы уверены, что строка пути, с которой вы создаете файл, включает родительские каталоги, т.е. если вы уверены, что путь имеет форму <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();