java 中创建目录应使用 files.createdirectories(),它能一次性创建多级路径并自动忽略已存在的目录。调用时需传入 path 对象,若需指定权限可附加 fileattribute 参数。

createDirectories() 与 createDirectory() 的区别是什么
主要区别在于对中间目录的处理:createDirectory() 要求父目录必须存在,否则抛出异常;而 createDirectories() 会自动创建所有缺失的父级目录。此外,前者在目标已存在时抛出异常,后者则静默成功。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class DirCreator {
public static void main(String[] args) throws Exception {
Path path = Paths.get("/tmp/a/b/c");
Files.createDirectories(path);
System.out.println(Files.exists(path));
}
}
如何为创建的目录设置特定权限
可以通过 PosixFilePermissions.asFileAttribute() 生成属性对象,并将其作为可变参数传递给 createDirectories()。这通常用于 Unix/Linux 环境,Windows 下该参数可能被忽略或仅部分生效。
你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
public class PermDirCreator {
public static void main(String[] args) throws Exception {
Path path = Paths.get("/tmp/secure_dir");
Set<posixfilepermission> perms = PosixFilePermissions.fromString("rwx------");
Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms));
}
}</posixfilepermission>
如果目录已存在会发生什么
使用 createDirectories() 时,如果目标路径已经是一个存在的目录,方法会直接返回该 Path 对象,不会抛出任何异常。这种行为使得它在脚本编写中非常安全,无需先进行 exists() 检查。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










