Ответ 1
Вы пробовали это?
file.getParentFile().mkdirs();
file.createNewFile();
Я не знаю ни одного вызова метода, который сделает это, но это довольно легко, как два оператора.
При использовании
file.createNewFile();
Я получаю следующее исключение
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
Мне интересно, есть ли createNewFile, который создает отсутствующие родительские каталоги?
Вы пробовали это?
file.getParentFile().mkdirs();
file.createNewFile();
Я не знаю ни одного вызова метода, который сделает это, но это довольно легко, как два оператора.
Ответ Jon работает, если вы уверены, что строка пути, с которой вы создаете файл, содержит родительские каталоги, т.е. если вы уверены, что путь имеет форму <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();