Risposte:
Hai provato questo?
file.getParentFile().mkdirs();
file.createNewFile();
Non conosco una singola chiamata al metodo che lo farà, ma è abbastanza semplice come due istruzioni.
mkdirsse il file che si sta tentando di creare non si trova in una directory inesistente, ma il mio caso d'uso è che sto creando più file, alcuni dei quali hanno directory principali, mentre altri no.
La risposta di Jon funziona se si è certi che la stringa del percorso con cui si sta creando un file includa le directory principali, ovvero se si è certi che il percorso sia della forma <parent-dir>/<file-name>.
In caso contrario, ovvero è un percorso relativo del modulo <file-name>, getParentFile()verrà restituito null.
Per esempio
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`.
Quindi, se il percorso del tuo file può includere o meno le directory principali, sei più sicuro con il seguente codice:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()restituiscenull,new File("dir/file.txt").getParentFile()restituisce lo stesso dinew File("dir")