Réponses:
Avez-vous essayé cela?
file.getParentFile().mkdirs();
file.createNewFile();
Je ne connais pas un seul appel de méthode qui fera cela, mais c'est assez simple comme deux déclarations.
mkdirssi le fichier que vous essayez de créer ne se trouve pas dans un répertoire inexistant, mais mon cas d'utilisation est que je crée plusieurs fichiers, dont certains ont des répertoires parents, tandis que d'autres ne le font pas.
La réponse de Jon fonctionne si vous êtes certain que la chaîne de chemin avec laquelle vous créez un fichier inclut les répertoires parents, c'est-à-dire si vous êtes certain que le chemin est de la forme <parent-dir>/<file-name>.
Si ce n'est pas le cas, c'est-à-dire qu'il s'agit d'un chemin relatif du formulaire <file-name>, alors getParentFile()retournera null.
Par exemple
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`.
Donc, si votre chemin de fichier peut ou non inclure des répertoires parents, vous êtes plus sûr avec le code suivant:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()renvoienull,new File("dir/file.txt").getParentFile()renvoie le même quenew File("dir")