如何与丢失的父目录一起创build一个新的文件?

使用时

file.createNewFile(); 

我得到以下exception

 java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb 

我想知道是否有一个createNewFile创build丢失的父目录?

你尝试过吗?

 file.getParentFile().mkdirs(); file.createNewFile(); 

我不知道一个方法调用会做到这一点,但作为两个语句很简单。

如果你确定你正在创build一个文件的pathstring包含父目录,也就是说如果你确定path的forms是<parent-dir>/<file-name> ,那么Jon的答案是有效的。

如果不是,即它是<file-name>forms的相对path,则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, ie `null`. 

因此,如果您的文件path可能包含或不包含父目录,则使用以下代码更安全:

 File f = new File(filename); if (f.getParentFile() != null) { f.getParentFile().mkdirs(); } f.createNewFile();