推荐直接使用File.mkdirs()或Files.createDirectories(),二者均能自动递归创建多级目录;前者简洁常用,后者更健壮并提供精确异常反馈。

Java 中创建多级目录文件夹,推荐直接使用 File.mkdirs() 或更现代的 Files.createDirectories(),它们都能自动递归创建不存在的父目录。
用 File.mkdirs() 创建多级目录
File.mkdirs() 是最常用、最简洁的方式。它会检查路径中每一级目录是否存在,若不存在则逐层创建,直到目标目录完整生成。
- 返回 true 表示创建成功(或目标目录已存在)
- 返回 false 表示创建失败(通常因权限不足、磁盘不可写或父路径有同名文件阻碍)
- 注意:不能处理路径中包含非法字符或系统保留名的情况
示例:
File dir = new File("a/b/c/d");
boolean created = dir.mkdirs(); // 自动创建 a → a/b → a/b/c → a/b/c/d
if (created) {
System.out.println("多级目录创建成功");
}
用 Files.createDirectories()(推荐,JDK7+)
这是 NIO.2 提供的更健壮方式,支持异常精确反馈,且能配合 FileAttribute 设置权限(如 Linux 下的 rwx)。
立即学习“Java免费学习笔记(深入)”;
- 成功时返回 Path 对象;失败时抛出具体异常(如
IOException、SecurityException) - 若路径已存在且是目录,不报错,直接返回
- 若路径已存在但不是目录(比如是个普通文件),会抛出
FileAlreadyExistsException
示例:
import java.nio.file.*;
try {
Path dir = Paths.get("x/y/z");
Files.createDirectories(dir); // 自动创建 x、x/y、x/y/z
System.out.println("目录已就绪");
} catch (IOException e) {
System.err.println("创建失败:" + e.getMessage());
}
注意事项和常见问题
避免踩坑,需留意以下几点:
- 路径分隔符建议用
File.separator或Paths.get()(自动适配系统),不要硬写"\"或"/" - 确保程序对目标磁盘路径有写入权限,尤其在 Linux/macOS 上运行时
- 如果路径中某一级是已存在的普通文件(比如有个叫
"a"的文件),则无法在其下创建"a/b",会报错 - 中文路径一般无问题,但需保证 JVM 默认编码与系统一致(如 UTF-8),否则可能乱码导致创建失败


















