java中file.mkdirs()
方法用于创建目录,该方法创建的目录是多层级的。可以创建/home/dir1/dir2/dir3形式的目录。
语法
public boolean mkdirs()
参数
没有参数
返回值
布尔值,成功创建返回true,失败返回false。
注意
创建目录需要有相应的权限。
例子
介绍一个例子了解该函数的使用方法。package com.example.yxjc.test;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\file_test\\dir1\\dir2");
if (file.mkdirs()) {
System.out.println(file.getAbsolutePath() + "目录创建成功");
} else {
System.out.println(file.getAbsolutePath() + "目录创建失败");
}
}
}
输出:
D:\file_test\dir1\dir2目录创建成功
内部实现
//创建多级目录
public boolean mkdirs() {
if (exists()) {
return false;
}
if (mkdir()) {
return true;
}
File canonFile = null;
try {
canonFile = getCanonicalFile();
} catch (IOException e) {
return false;
}
File parent = canonFile.getParentFile();
return (parent != null && (parent.mkdirs() || parent.exists()) &&
canonFile.mkdir());
}
public File getCanonicalFile() throws IOException {
String canonPath = getCanonicalPath();
if (getClass() != File.class) {
canonPath = fs.normalize(canonPath);
}
return new File(canonPath, fs.prefixLength(canonPath));
}
public File getParentFile() {
String p = this.getParent();
if (p == null) return null;
if (getClass() != File.class) {
p = fs.normalize(p);
}
return new File(p, this.prefixLength);
}