file类仅抽象路径并执行基础操作,不读写内容;创建文件前须用mkdirs()确保父目录存在;delete()不抛异常且仅删空目录;推荐用正斜杠/保证跨平台兼容。

File类本身不操作磁盘数据,只负责路径抽象和基础文件系统动作——创建、删除、判断存在性等。它不能读写内容,也不自动处理路径依赖关系,所有操作都需显式调用方法并检查返回值。
创建文件前必须确保父目录就绪
createNewFile() 只创建文件本身,不会建任何目录。若目标路径含不存在的上级目录(如 "data/log/app.log"),直接调用会失败并返回 false。
- 先用 getParentFile() 获取父路径对象
- 再对父路径调用 mkdirs()(不是 mkdir),一次性创建所有缺失的中间目录
- 最后调用 createNewFile();建议始终配合 exists() 判断,避免静默忽略已存在情况
创建目录要分清单层与多级
mkdir() 要求父目录必须已存在,否则返回 false;mkdirs() 则递归创建整条路径,适合不确定环境时使用。
- 例如 new File("a/b/c").mkdir():仅当 "a/b" 已存在才成功
- 而 new File("a/b/c").mkdirs():会依次创建 a → a/b → a/b/c
- 推荐默认用 mkdirs(),更健壮,尤其在跨环境部署时
删除操作有严格限制,非空目录需手动递归
delete() 只能删空目录或文件,且不抛异常——失败时只返回 false,容易被忽略。
- 删文件:确认是 isFile(),且未被其他进程占用
- 删目录:必须先确保为空;否则需自己遍历子项,对每个子 File 递归调用 delete()
- 没有内置“强制删除”方法;JDK7+ 更推荐用 Files.walkFileTree() 配合 SimpleFileVisitor 实现安全递归删除
路径写法与平台兼容性要点
Windows 用反斜杠 \,Linux/macOS 用正斜杠 /,但 File 类内部可识别两者。为减少出错:
- 优先使用正斜杠 /(Java 官方推荐,所有系统都支持)
- 避免硬编码盘符或绝对路径;开发阶段多用相对路径(如 "./config/app.json")
- 必要时用 File.separator 动态拼接,但实际中直接写 "/" 更简洁可靠











