Respostas:
Você já tentou isso?
file.getParentFile().mkdirs();
file.createNewFile();
Não conheço uma única chamada de método que faça isso, mas é muito fácil como duas instruções.
mkdirsse o arquivo que está tentando criar não estiver em um diretório inexistente, mas meu caso de uso é que estou criando vários arquivos, alguns dos quais têm diretórios pais, enquanto outros não.
A resposta de Jon funciona se você tiver certeza de que a string do caminho com a qual você está criando um arquivo inclui diretórios pais, ou seja, se você tiver certeza de que o caminho está no formato <parent-dir>/<file-name>.
Caso contrário, ou seja, se for um caminho relativo do formulário <file-name>, ele getParentFile()retornará null.
Por exemplo
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`.
Portanto, se o caminho do arquivo pode ou não incluir diretórios pais, você estará mais seguro com o seguinte código:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()retornanull,new File("dir/file.txt").getParentFile()retorna o mesmo quenew File("dir")