Java 如何在缺少父目录的情况下创建新文件?
使用时Java 如何在缺少父目录的情况下创建新文件?,java,Java,使用时 file.createNewFile(); 我得到以下例外 java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb 我想知道是否有createNewFile创建丢失的父目录?您尝试过这个吗 file.getParentFile().mkdirs(); file.createNewFile(); 我不知道有哪一个方法调用可以做到这一点,但它非常简单,只需两条语句即可。如
file.createNewFile();
我得到以下例外
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
我想知道是否有createNewFile创建丢失的父目录?您尝试过这个吗
file.getParentFile().mkdirs();
file.createNewFile();
我不知道有哪一个方法调用可以做到这一点,但它非常简单,只需两条语句即可。如果您确定创建文件时使用的路径字符串包含父目录,即如果您确定路径的形式为
/
,Jon的回答就有效
如果它不是,即它是表单
的相对路径,则getParentFile()
将返回null
例如
因此,如果您的文件路径可能包含或不包含父目录,则使用以下代码更安全:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
从java7开始,您还可以使用NIO2 API:
void createFile() throws IOException {
Path fp = Paths.get("dir1/dir2/newfile.txt");
Files.createDirectories(fp.getParent());
Files.createFile(fp);
}
这仅适用于使用包含父目录的路径字符串创建文件的情况,即
新文件(“file.txt”)。getParentFile()
返回null
,新文件(“dir/file.txt”)。getParentFile()
返回与新文件(“dir”)相同的值,如果您试图创建的文件不在不存在的目录中,则不需要mkdirs
,但我的使用案例是,我正在创建多个文件,其中一些文件具有父目录,而其他文件则不具有父目录。出于许多原因,您应该始终包含路径。否则系统怎么知道你想把文件放在哪里?@NikkyD对不起,我不太理解你的评论。在我的回答中,我并不是说没有包含路径,而是说传递的路径可能不包含父目录。答案中也有这样一条路径的例子。
void createFile() throws IOException {
Path fp = Paths.get("dir1/dir2/newfile.txt");
Files.createDirectories(fp.getParent());
Files.createFile(fp);
}