Files.createDirectories 是递归创建目录的方法,会自动创建所有不存在的父目录;而 createDirectory 只能创建最后一级且要求父目录已存在。

Files.createDirectories 本身就是递归创建目录的方法,不需要额外处理。
它和 createDirectory 的核心区别
Files.createDirectory 只能创建最后一级目录,且要求父目录必须已存在;否则抛出 NoSuchFileException。
Files.createDirectories 则会自动逐级检查并创建所有不存在的父目录,只要路径中某一级不存在,它就帮你建出来,直到目标目录完整生成。
基本用法示例
只需传入一个 Path 对象,比如要创建 /a/b/c/d:
- 如果 /a/b/c 已存在 → 只新建 d
- 如果 /a/b 不存在 → 先建 /a,再建 /a/b,再建 /a/b/c,最后建 /a/b/c/d
- 即使整个路径都不存在(如根下全新路径),也能完整创建
注意事项
该方法在遇到已存在的目录时不会报错,而是直接返回对应 Path 对象,行为安全。
若路径指向一个已存在的非目录类型文件(比如同名普通文件),则抛出 FileAlreadyExistsException。
权限不足、磁盘只读等系统限制情况会抛出相应的 IOException 子类(如 AccessDeniedException)。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
配合其他操作更实用
常和 Paths.get 组合使用,支持字符串或 URI 构建 Path:
Files.createDirectories(Paths.get("data/logs/error"));Files.createDirectories(Paths.get("/home/user/project/cache"));
也可在创建后立即设置目录权限(如 Linux 下):
Files.createDirectories(path, PosixFilePermissions.asFileAttribute(…));

















