Respuestas:
¿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.
mkdirssi 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
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`.
Entonces, si su ruta de archivo puede incluir o no directorios principales, está más seguro con el siguiente código:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()vuelvenull,new File("dir/file.txt").getParentFile()devuelve el mismo quenew File("dir")