file类通过exists()判断存在性,mkdir/mkdirs创建目录,delete/deleteonexit删除文件;不涉及i/o流,仅处理路径元信息;现代开发推荐使用nio.2的paths和files替代。

File 类通过 exists() 方法判断存在性,配合 mkdir/mkdirs 和 delete/deleteOnExit 实现创建与删除。它不涉及 I/O 流操作,只处理文件系统路径的元信息和基础操作,适用于简单场景;但需注意权限、路径合法性及返回值含义。
判断文件或目录是否存在
调用 exists() 方法即可,返回 true 表示路径对应实体(文件或目录)在磁盘上真实存在:
- 该方法不区分是文件还是目录,仅确认“存在”
- 若路径为 null 或非法格式(如含禁止字符),可能抛出 SecurityException 或静默返回 false
- 建议先用 isFile() 或 isDirectory() 进一步确认类型
创建文件或目录
创建行为需分情况处理:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 创建文件:先用 createNewFile()(注意:此方法会抛出 IOException,且仅当文件不存在时才创建并返回 true)
- 创建单级目录:用 mkdir(),仅当父目录已存在时成功,返回 false 表示失败(如父目录缺失)
- 创建多级目录:用 mkdirs(),自动创建所有必要父目录,更常用
删除文件或目录
delete() 是最常用方式,但有重要限制:
- 只能删除空目录;非空目录直接返回 false
- 文件删除成功返回 true,失败(如被占用、无权限)也返回 false,不抛异常
- 若需确保删除,可先递归清空目录内容再删,或改用 Files.delete()(Java 7+,支持抛异常提示具体原因)
- deleteOnExit() 适合临时文件:JVM 退出前自动删除,无需手动清理
注意事项与替代方案
File 类设计较老,部分行为不够直观(如 delete 不报错、mkdir 不建父目录)。现代开发推荐优先使用 java.nio.file 包:
- Paths.get() + Files.exists() 更语义清晰
- Files.createDirectories() 替代 mkdirs()
- Files.delete() 或 Files.deleteIfExists() 提供明确异常,便于调试
- 尤其处理符号链接、权限、原子操作等高级需求时,NIO.2 更可靠
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










