La risposta di Jon funziona se si è certi che la stringa di percorso con cui si sta creando un file include le directory padre, ad esempio se si è certi che il percorso sia del formato <parent-dir>/<file-name>
.
In caso contrario, vale a dire un percorso relativo del modulo <file-name>
, quindi getParentFile()
restituirà 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`.
Così, se il percorso del file può o non può includere directory padre, si sono più sicuri con il seguente codice:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
fonte
2014-11-21 09:56:17
Questo funziona solo se il file è stato creato con una stringa di percorso che contiene un genitore directory, cioè 'new File (" file.txt "). getParentFile()' restituisce 'null',' new File ("dir/file.txt"). getParentFile() 'restituisce lo stesso di' new File ("dir ")' –
Vero, non hai bisogno di 'mkdirs' se il file che stai cercando di creare non si trova in una directory inesistente, ma il mio caso d'uso è che sto creando più file, _qualcuno dei quali ha directory madri, mentre altri no. –