Antworten:
Hast du das versucht?
file.getParentFile().mkdirs();
file.createNewFile();
Ich kenne keinen einzigen Methodenaufruf, der dies erledigt, aber es ist ziemlich einfach als zwei Anweisungen.
mkdirswenn die Datei , die Sie versuchen , erstellen nicht in einem nicht vorhandenen Verzeichnis ist, aber mein Anwendungsfall ist , dass ich mehrere Dateien erschaffe, einige übergeordnete Verzeichnisse von denen haben, während andere dies nicht tun.
Jons Antwort funktioniert, wenn Sie sicher sind, dass die Pfadzeichenfolge, mit der Sie eine Datei erstellen, übergeordnete Verzeichnisse enthält, dh wenn Sie sicher sind, dass der Pfad die Form hat <parent-dir>/<file-name>.
Wenn dies nicht der Fall ist, dh ein relativer Pfad des Formulars ist <file-name>, getParentFile()wird zurückgegeben null.
Z.B
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`.
Wenn Ihr Dateipfad möglicherweise übergeordnete Verzeichnisse enthält oder nicht, sind Sie mit dem folgenden Code sicherer:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()zurückgibtnull,new File("dir/file.txt").getParentFile()das gleiche zurückgibt wienew File("dir")