Ao usar
file.createNewFile();
Eu recebo a seguinte exceção
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
Gostaria de saber se existe um createNewFile que cria os diretórios pai ausentes?
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.
new File("file.txt").getParentFile()
retornanull
,new File("dir/file.txt").getParentFile()
retorna o mesmo quenew File("dir")
mkdirs
se 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>
, elegetParentFile()
retornaránull
.Por exemplo
Portanto, se o caminho do arquivo pode ou não incluir diretórios pais, você estará mais seguro com o seguinte código:
fonte
A partir do java7, você também pode usar a API NIO2:
fonte