Cuando usas
file.createNewFile();
Obtengo la siguiente excepción
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
Me pregunto si hay un createNewFile que crea los directorios principales que faltan.
¿Has probado esto?
file.getParentFile().mkdirs();
file.createNewFile();
No conozco una sola llamada a un método que haga esto, pero es bastante fácil como dos declaraciones.
new File("file.txt").getParentFile()
vuelvenull
,new File("dir/file.txt").getParentFile()
devuelve el mismo quenew File("dir")
mkdirs
si el archivo que está intentando crear no está en un directorio inexistente, pero mi caso de uso es que estoy creando varios archivos, algunos de los cuales tienen directorios principales, mientras que otros no.La respuesta de Jon funciona si está seguro de que la cadena de ruta con la que está creando un archivo incluye directorios principales, es decir, si está seguro de que la ruta tiene la forma
<parent-dir>/<file-name>
.Si no es así, es decir, es una ruta relativa del formulario
<file-name>
,getParentFile()
volveránull
.P.ej
Entonces, si su ruta de archivo puede incluir o no directorios principales, está más seguro con el siguiente código:
fuente
A partir de java7, también puede utilizar la API NIO2:
fuente