Java 的 File 类用于本地文件系统路径抽象与元数据操作,支持创建、删除、判断文件/目录类型及权限检查,但不处理内容读写;推荐 Java 7+ 使用 NIO.2(Files/Paths),File 仍用于兼容场景。
java 中的 file 类可以操作本地文件系统,完成创建、删除文件和目录等基本任务。它不涉及文件内容读写,只负责路径抽象与元数据操作。注意:从 java 7 开始,官方更推荐使用 java.nio.file(如 files 和 paths),但 file 类仍广泛用于兼容性和简单场景。
创建文件或目录
File 对象本身只是路径的封装,不会自动在磁盘上生成实体。需调用具体方法触发实际操作:
-
创建单个空文件:调用
file.createNewFile(),返回true表示成功(文件原先不存在且创建成功),false表示失败(可能已存在、父目录不存在或无权限);该方法会抛出IOException,必须处理。 -
创建单层目录:用
file.mkdir(),仅当父目录已存在时才成功。 -
创建多级目录(含父目录):用
file.mkdirs(),自动逐级创建所有缺失的上级目录。
示例:File f = new File("D:/test/dir1/dir2/file.txt");<br>f.getParentFile().mkdirs(); // 先确保父路径存在<br>f.createNewFile(); // 再创建文件
删除文件或目录
delete() 方法用于删除文件或空目录:
- 对文件调用:直接删除该文件。
- 对目录调用:仅当目录为空(不含任何文件或子目录)时才成功,否则返回
false。 - 该方法不抛异常,只返回布尔值表示是否成功,因此需检查返回值并自行处理失败情况(如提示“目录非空”或尝试递归删除)。
若要删除非空目录,需先递归删除其全部内容,再删目录本身。可借助 listFiles() 获取子项并逐个处理。
判断类型与存在性(操作前建议检查)
避免因误判导致操作失败,常用判断方法有:
-
exists():路径是否真实存在于磁盘(文件或目录均可)。 -
isFile()/isDirectory():明确区分类型,防止对文件调用mkdirs()或对目录调用createNewFile()等错误操作。 -
canRead()/canWrite():检查权限,尤其在跨平台或受限环境中很有用。
注意事项与常见问题
-
File使用系统默认编码解析路径字符串,含中文路径时需确保项目编码与系统一致(如 UTF-8),否则可能报FileNotFoundException。 - 路径分隔符尽量用
File.separator(如"dir" + File.separator + "file.txt"),提高跨平台兼容性。 - 删除非空目录需手动递归,
File类不提供内置方法;Java 7+ 可用Files.walkFileTree()简化实现。 - 操作前务必确认路径合法性(如不能以
/或..越权访问系统敏感区域),尤其在接收用户输入时需做白名单校验。

















