Answers:
如果您确定用来创建文件的路径字符串包括父目录,那么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")