La respuesta de Jon funciona si está seguro de que la cadena de ruta de acceso con la que está creando un archivo incluye directorios principales, es decir, si está seguro de que la ruta tiene el formato <parent-dir>/<file-name>
.
Si no es así, es decir, es una ruta relativa del formulario <file-name>
, entonces getParentFile()
devolverá null
.
E.g.
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`.
Así que si su ruta de archivo puede o no puede incluir directorios padre, que son más seguros con el siguiente código:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
Esto sólo funciona si el archivo fue creado con una cadena de ruta que contiene un padre directorio, es decir, 'nuevo archivo (" archivo.txt "). getParentFile()' devuelve 'nulo',' nuevo archivo ("dir/archivo.txt"). getParentFile() 'devuelve lo mismo que' nuevo archivo ("dir ")' –
Es cierto que no necesita 'mkdirs' si el archivo que intenta 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. –