推荐用Files.createDirectories()创建多级目录,自动处理已存在情况;删非空目录用Files.walkFileTree()递归删除;重命名本质是Files.move()操作,可加REPLACE_EXISTING覆盖目标。

Java 中操作文件和目录主要用 java.io.File(传统方式)或 java.nio.file(推荐,JDK 7+)。下面直接说怎么创建目录、删除目录、重命名文件,重点讲清楚常用且可靠的做法。
创建目录(含多级)
用 File.mkdirs() 可一次性创建完整路径,包括所有不存在的父目录;mkdir() 只建最后一级,父目录必须已存在。
推荐用 NIO 的 Files.createDirectories(),它更健壮,会自动处理已存在的情况,还支持设置权限(如需要):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- // 创建 /a/b/c/d 目录,中间层级不存在也会自动创建
- Files.createDirectories(Paths.get("/a/b/c/d"));
- // 如果只想建单层(如当前目录下新建 test),可用 createDirectory()
- Files.createDirectory(Paths.get("test")); // 已存在会抛 FileAlreadyExistsException
删除目录(含非空目录)
File.delete() 只能删空目录或文件;要删非空目录,得先递归删除内容。NIO 提供了更简洁的方式:
立即学习“Java免费学习笔记(深入)”;
- // 删除空目录
- Files.delete(Paths.get("empty-dir"));
- // 删除非空目录(递归)
- Files.walkFileTree(Paths.get("target-dir"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
}); - // JDK 19+ 可用 Files.deleteIfExists() 配合 walk,但目前仍需手动遍历
重命名文件或目录(即移动)
Java 中没有“重命名”独立方法,本质是调用 move 操作。NIO 的 Files.move() 是标准做法,支持跨文件系统(取决于底层 OS 和 JVM 实现):
- Files.move(Paths.get("old.txt"), Paths.get("new.txt"));
- // 若目标已存在,默认会失败;加参数可覆盖
- Files.move(Paths.get("old.txt"), Paths.get("new.txt"), StandardCopyOption.REPLACE_EXISTING);
- // 注意:move 到不同盘符/分区时,实际是复制+删除,可能较慢
小提醒
- 操作前建议用
Files.exists()或path.toFile().exists()判断路径是否存在 - 涉及路径拼接,别用字符串拼
"a" + File.separator + "b",改用Paths.get("a", "b")更安全 - 所有 NIO 方法都可能抛
IOException,记得 try-catch 或声明抛出 -
File类已不推荐用于新项目,NIO 更精确、功能更强、异常语义更清晰

















