File类仅管理文件元信息与路径操作,不读写内容;可创建删除目录、重命名、判断属性、遍历子项,但不可读写、复制文件或获取编码等高级属性。

File类本身不读写文件内容,只管理文件和目录的元信息与路径操作。它像一个“文件系统的导航员”,负责创建、删除、重命名、判断存在性、获取路径、列出子项等,但真正读写数据得靠InputStream/OutputStream或Scanner/FileWriter等配套类。
能直接操作文件系统结构
File对象可以执行与磁盘上实际文件或目录相关的动作:
- 用mkdir()或mkdirs()创建目录(后者支持多级)
- 用delete()删除文件或空目录;deleteOnExit()注册退出时删除
- 用renameTo(File dest)重命名或移动(仅限同磁盘,且目标不能存在)
- 用createNewFile()原子性创建新文件(返回false说明已存在)
能获取和判断文件基础属性
所有判断和获取都不触发IO读取内容,速度快:
- exists()、isFile()、isDirectory()、canRead()、canWrite()等返回布尔值
- length()返回字节数(对目录返回0)
- lastModified()返回毫秒时间戳,可转为Date查看
- getAbsolutePath()、getCanonicalPath()、getName()、getParent()用于路径解析
能遍历目录内容但不递归
list()返回String[]文件名数组;listFiles()返回File[]对象数组,更实用:
立即学习“Java免费学习笔记(深入)”;
- 两者都只查当前层,不深入子目录
- 可传FilenameFilter或FileFilter实现简单筛选(比如只取.java文件)
- 注意返回null表示路径不存在、非目录或无访问权限——必须判空,否则NPE
不能做的事要特别注意
避免常见误解:
- 不能读取或写入文件内容(没read()、write()方法)
- 不能复制文件(需配合流手动实现)
- 不能获取文件编码、MIME类型、图片尺寸等高级属性
- 路径字符串不校验合法性,new File("a/b/c")不会报错,哪怕路径根本不存在










