回答:
Jonの答えは、ファイルの作成に使用するパス文字列に親ディレクトリが含まれていることが確実な場合、つまりパスがの形式であることが確実な場合に機能します<parent-dir>/<file-name>。
そうでない場合、つまりフォームの相対パスである場合<file-name>は、getParentFile()が返されnullます。
例えば
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`.
したがって、ファイルパスに親ディレクトリが含まれている場合と含まれていない場合は、次のコードを使用する方が安全です。
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()戻りnull、new File("dir/file.txt").getParentFile()同じ返しますnew File("dir")