java.nio.file.Files 是 JDK 7+ 提供的静态工具类,支持创建(createFile/createDirectories)、复制(copy)、移动(move)、删除(delete/deleteIfExists)等文件操作,并需配合 Path 使用,注意异常处理与路径校验。

Java 中没有名为 Files 的“工具类”,但 java.nio.file.Files 是 JDK 7+ 提供的标准文件操作类,它本身是工具类(所有方法为 static),配合 Path 可以一键完成创建、复制、删除等常见操作,无需额外依赖。
创建文件或目录
使用 Files.createFile() 创建空文件,Files.createDirectory() 创建单层目录,Files.createDirectories() 创建多层嵌套目录(自动补全父路径):
- Files.createFile(Paths.get("a.txt")) —— 若文件已存在会抛 FileAlreadyExistsException
- Files.createDirectories(Paths.get("data/log/2024/06")) —— 安全创建完整路径,父目录不存在也会自动建好
复制与移动文件
Files.copy() 和 Files.move() 支持多种源/目标类型(Path、InputStream、OutputStream),常用场景如下:
- Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING) —— 覆盖目标文件
- Files.copy(src, Files.newOutputStream(dst)) —— 用流方式复制,适合大文件或需自定义处理
- Files.move(src, dst, StandardCopyOption.ATOMIC_MOVE) —— 原子性移动(同磁盘时为重命名,更高效安全)
删除文件或空目录
Files.delete() 删除单个文件或空目录;若要递归删除非空目录,需配合 Files.walk() 或手动遍历:
- Files.delete(Paths.get("temp.txt")) —— 文件不存在或非空目录会抛异常
- Files.deleteIfExists(Paths.get("backup.zip")) —— 更安全,不存在也不报错
- 递归删除目录:Files.walk(dir).sorted(Comparator.reverseOrder()).forEach(Files::delete)
实用小技巧
操作前建议先校验路径状态,避免异常中断流程:
- 用 Files.exists(path) 判断是否存在
- 用 Files.isDirectory(path) 或 Files.isRegularFile(path) 区分类型
- 所有方法均可能抛 IOException,务必 try-catch 或向上声明

















